Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС 2 модуль все части ПЕЧАТАТЬ.docx
Скачиваний:
70
Добавлен:
18.12.2018
Размер:
328.96 Кб
Скачать
  1. Ч4_Как соотносятся приоритеты обработчиков прерываний и приоритеты потоков?

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

  1. Ч4_Как согласуется диспетчеризация прерываний с диспетчеризацией потоков?

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

  1. Ч4_Как организована диспетчеризация системных вызовов?

Системный вызов позволяет приложению обратиться к ОС с просьбой выполнить то или иное действие, оформленное как процедура кодового сегмента ОС. Для прикладного программиста ОС выглядит как некая библиотека, представляющая некоторый набор полезных функций, с помощью которых можно упростить прикладную программу или выполнить действия, запрещенные в пользовательском режиме. Уже говорилось, что реализация системных вызовов должна: обеспечивать переключение в привилегированный режим; обладать высокой скоростью вызова процедур ОС; обеспечивать по возможности единообразное обращение к системным вызовам; допускать легкое расширение набора системных вызовов; обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.

  1. Ч4_Опишите схему организации системных вызовов с диспетчером системных вызовов.

Здесь при любом системном вызове приложение выполняет программное прерывание (INT) с определенным и единственным номером вектора. Перед выполнением программного прерывания приложение некоторым образом передает ОС номер системного вызова (например, 22h), который является индексом в дополнительной таблице sysent адресов процедур ОС, реализующих системные вызовы. Кроме номера передаются аргументы системного вызова.

Диспетчер системных вызовов обычно представляет собой простую программу, которая сохраняет содержимое регистров процессора в системном стеке, проверяет, попадает ли запрошенный номер вызова в поддерживаемый ОС диапазон (в таблицу sysent адресов системных вызовов) и передает управление адресованной процедуре ОС. Искомая процедура обработки системного вызова извлекает из системного стека аргументы и выполняет заданное действие.

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