Cтраница 2
Как и большинство операционных систем, ДОС предназначена для автоматизации процесса создания программ, сокращения промежутка времени между постановкой задачи для решения и получением результатов и для увеличения объема работы, выполняемой машиной в единицу времени. [16]
При загрузке операционной системы UNIX ( и большинства других операционных систем) начальный загрузчик, хранящийся в 0 - м секторе диска, загружает программу загрузки, которая, в свою очередь, загружает операционную систему. Зачем требуется этот лишний промежуточный этап. Ведь было бы проще, если начальный загрузчик, хранящийся в 0 - м секторе диска, загружал операционную систему напрямую. [17]
Для усиления контраста между этими подходами добавим, что большинство операционных систем потенциально страдают от взаимоблокировок, которые даже не обнаруживаются, не говоря уже об автоматическом выходе из тупика. Суммарное количество процессов в системе определяется количеством записей в таблице процесса. Таким образом, ячейки таблицы процесса являются ограниченным ресурсом. Если системный вызов fork получает отказ, потому что таблица целиком заполнена, разумно будет, что программа, вызывающая fork, подождет какое-то время и повторит попытку. [18]
Следующий коэффициент в табл. 11.6 отражает начальное качество программного обеспечения, причем большинство достаточно крупных операционных систем, выпущенных за последние несколько лет, принадлежат к одной из первых трех категорий. Оставшиеся два коэффициента позволяют учесть изменения ( о них говорилось выше), которые вносят поставщики и пользователи соответственно. В обоих случаях следовало бы считать, что значения коэффициентов будут изменяться с течением времени в соответствии с переделками, произведенными за конкретный год: например для операционной системы или пакета прикладных программ, разработанных для конкретного пользователя, коэффициенты для учета годовых изменений можно принять равными 1 в 1 - й год жизни и 0 25 - во 2 - й и следующие годы при условии, что исходный проект не меняет своей сути при выпуске новых версий. Каждый их этих коэффициентов отражает среднегодовое, а для случая универсального программного обеспечения - кратковременное изменение качества, обусловленное выпуском новых версий или ожидаемым различием в загруженности, причем значение этого изменения согласуется с данными, приведенными в гл. [19]
В файловых системах файлы обычно организуются в каталоги или папки, которые, в свою очередь, в большинстве операционных систем также являются файлами. В данном разделе мы рассмотрим каталоги, их организацию, свойства и действия, которые могут быть выполнены с ними. [20]
В файловых системах файлы обычно организуются в каталоги или папки, которые, в свою очередь, в большинстве операционных систем также являются файлами. В данном разделе мы рассмотрим каталоги, их организацию, свойства и действия, которые могут быть выполнены с ними. [21]
Для изготовителя 32-разрядных микропроцессорных систем-смонтировать на новой машине операционную систему Unix легче, чем какую-либо другую, потому что в отличие от большинства операционных систем система Unix написана на языке Си, а не на процессорно-ориентированном языке ассемблера. Оснащение нового процессора системой Unix может потребовать переработки не более 1 % программного обеспечения для того, чтобы компилятор языка Си стал доступен для процессора. Вместо того чтобы предпринимать эти преобразования собственными силами, большинство изготовителей находят менее рискованным прибегать для этой цели к услугам фирм - разработчиков программного обеспечения. [22]
Использование Макро для реализации вычислительных задач с использованием численных методов не рассматривается, поскольку эти задачи с высокой степенью эффективности решаются компилятором с языка Фортран IV, входящим в большинство операционных систем СМ. При необходимости реализации таких задач на языке Макро в качестве подсобного материала может быть использован листинг соответствующей программы на языке Фортран IV, так как компилятор с этого языка может создавать распечатку сгенерированного кода на языке Макро. [23]
Третья проблема - сохранение и восстановление информации, необходимой для продолжения обработки прерванного сообщения - решается несколько труднее. Большинство операционных систем при обработке прерывания запоминает текущее состояние ЭВМ и текущий адрес команды. Программист, составляющий абсолютную программу, должен, кроме того, обеспечить запоминание указателя адреса я всех промежуточных и конечных результатов, полученных до прерывания. Если программа пишется для мини - ЭВМ, в которой нет операционной системы, то и здесь необходимо предусматривать запоминание текущего адреса команды. [24]
Системное программное обеспечение непрерывно совершенствуется системными программистами с тем, чтобы сделать доступ к ЭВМ легче и уменьшить затраты времени на это. Большинство операционных систем имеет открытую модульную структуру, что позволяет пользователю приспособить ее для конкретных условий. [25]
Третья проблема - сохранение и восстановление информации, необходимой для продолжения обработки прерванного сообщения - решается несколько труднее. Большинство операционных систем при обработке прерывания запоминает текущее состояние ЭВМ и текущий адрес команды. Программист, составляющий абсолютную программу, должен, кроме того, обеспечить запоминание указателя адреса и всех промежуточных в конечных результатов, полученных до прерывания. Если программа пишется для мини - ЭВМ, в которой нет операционной системы, то и здесь необходимо предусматривать запоминание текущего адреса команды. [26]
В ядро операционной системы довольно часто входит механизм управления памятью. Большинство операционных систем в той или иной форме предусматривает средства распределения дополнительной памяти и ее последующее освобождение во время фактического выполнения программ. В дальнейшем мы подробно рассмотрим различные подходы к организации системного управления памятью. Настоящий раздел посвящен описанию простейшего механизма управления содержимым памяти, позволяющего продемонстрировать задачи и способы функционирования некоторых компонентов достаточно простого по форме ядра. [27]
![]() |
Передача управления между сопрограммами в ассемблере. [28] |
Это действие, однако, бессмысленно, если перед программой не зарезервировано место в памяти. Большинство операционных систем гарантирует отведение под стек определенного количества памяти, загружая программу с тысячного адреса. [29]
Почему процедура COPY полезна. Большинство операционных систем дают возможность определить, какие внешние файлы, наборы данных или устройства ввода-вывода соответствуют внутренним файлам Вашей программы. Это соответствие устанавливается после компиляции программы, во время ее выполнения. Те системы, которые не поддерживают такое определение файлов, можно пополнить, чтобы в них определялось соответствие с помощью нашего стандартного интерфейса. Это означает, что у Вас под рукой могут быть программы, готовые к запуску, а решить, какой файл или устройство использовать, можно в последний момент. Это означает также, что подобные программы Вы можете рассматривать как черные ящики и совершенно забыть об их внутреннем устройстве. Если имеется примитив GETC, предназначенный для чтения данных из стандартного ввода, типа файла INPUT, обычно связанного с Паскаль-программой, и имеется примитив PUTC, предназначенный для записи в стандартный вывод, типа файла OUTPUT, то Вы можете связать их с соответствующими файлами и устройствами в процессе выполнения программы. [30]