Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 3. Процессы и потоки.doc
Скачиваний:
11
Добавлен:
18.11.2019
Размер:
441.86 Кб
Скачать

154 Глава 4. Процессы и потоки

системной области памяти, куда они помещаются после считывания из регист­ров контроллера этого устройства, в индивидуальную часть адресного простран­ства процесса, запросившего операцию ввода-вывода. Такое действие постоянно выполняется системой ввода-вывода, и для его реализации были введены такие специфические процедуры обслуживания прерываний, как АРС.

Диспетчеризация прерываний является важной функцией ОС, и эта функ­ция реализована практически во всех мультипрограммных операционных сис­темах. Можно< заметить, что в общем случае в операционной системе реализуется двухуровневый механизм планирования работ. Верхний уровень планирования выполняется диспетчером прерываний, который распределяет процессорное время между потоком поступающих запросов на прерывания различных ти­пов — внешних, внутренних и программных. Оставшееся процессорное время распределяется другим диспетчером — диспетчером потоков на основании дис­циплин квантования и других,-рассмотренных ранее.

Системные вызовы

Системный вызов позволяет приложению обратиться к операционной систе­ме с просьбой выполнить то или иное действие, оформленное как процедура (или набор процедур) кодового сегмента ОС.

Для прикладного программиста операционная система выглядит как некая библиотека, предоставляющая некоторый набор полезных функций, с помощью которых можно упростить прикладную программу или выполнить действия, за­прещенные в пользовательском режиме, например обменяться данными с уст­ройством ввода-вывода.

Реализация системных вызовов должна удовлетворять следующим требова­ниям:

  • обеспечивать переключение в привилегированный режим;

  • обладать высокой скоростью вызова процедур ОС; "

  • обеспечивать по возможности единообразное обращение к системным вызо­вам для всех аппаратных платформ, на которых работает ОС;

  • допускать легкое расширение набора системных вызовов;

  • обеспечивать контроль со стороны ОС за корректным использованием сис- ' темных вызовов.

Первое требование для большинства аппаратных платформ может быть вы­полнено только с помощью механизма программных прерываний. Поэтому бу­дем считать, что остальные требования нужно обеспечить именно для такой реализации системных вызовов. Как это обычно бывает, некоторые из этих тре­бований взаимно противоречивы.

Для обеспечения высокой скорости было бы полезно использовать вектор­ные свойства системы программных прерываний, имеющиеся во многих про­цессорах, то есть закрепить за каждым системным вызовом определенное значение вектора. Приложение при таком способе вызова непосредственно

Мультипрограммирование на основе прерываний 155

указывает в аргументе запроса значение вектора, после чего управление немед­ленно передается требуемой процедуре операционной системы (рис. 4.14, а). Однако этот децентрализованный способ передачи управления привязан к осо­бенностям аппаратной платформы, а также не позволяет операционной системе легко модифицировать набор системных вызовов и контролировать их,исполь­зование. Например, в процессоре Pentium количество системных вызовов опре­деляется количеством векторов прерываний, выделенных для этой цели из обще­го пула в 256 элементов (часть которых используется под аппаратные прерыва­ния и обработку исключений). Добавление нового системного вызова требует от системного программиста тщательного поиска свободного элемента в табли­це прерываний, которого к тому же на каком-то этапе развития ОС может и не оказаться.

Таблица прерываний системы

Системный

вызов

Вектор = 22h

Виртуальное адресное пространство системы

Процедура обработки

Адрес процедуры 21 h

системного вызова 21 h

Адрес процедуры 22h

1 _

Адрес процедуры 23h

Процедура обработки

системного вызова 22h

Процедура обработки системного вызова 23h

Таблица прерываний системы

Системный

вызов

Вектор = 80h, R0r=21h

Адрес диспетчера системных вызовов

RCT

С