Вот эту вот муть я сейчас ботаю в рамках подготовки к экзамену по курсу "Операционные системы", чтоб им... В основном, правда, речь идет о UNIX'е, но вот и Винда затесалась.
Билет № 30. Организация планирования обработки прерываний в ОСWINDOWS NT.
ОС должна обеспечивать контроль над ходом выполнения системных процедур, вызываемых по прерываниям . Это необходимое условие для правильного планирования пользовательских процессов.
Рассмотрим пример, в котором обработчик прерываний принтера блокирует на длительное время обработку прерываний от таймера, в результате чего системное время на некоторое время «замирает», и один из процессов (2), критически важный для пользователя, не получат управление в запланированное время.
Упорядоченное планирование прерываний.
Механизм прерываний поддерживает приоритезацию и маскирование прерываний.
Источники прерываний делятся на классы - каждому классу свой уровень приоритета запроса на прерывание.
Дисциплина обслуживания приоритетов
- относительная (выбор по наивысшему приоритету, но далее обработка не может быть отложена)
- абсолютная (происходит переход к обработке более приоритетного с откладыванием текущего)
Механизм маскирования запросов.
В схеме с абсолютными приоритетами заложено маскирование, так как запрещаются запросы с равными или более низкими приоритетами.
В общем случае - возможность маскирования прерываний любого класса и любого приоритета на некоторое время.
Упорядочивание работы обработчиков прерываний - механизм приоритетных очередей.
Наличие в ОС программного модуля - диспетчера прерываний.
При возникновении прерывания - вызов диспетчера.
Он блокирует все прерывания на некоторое время, устанавливает причину прерывания, сравнивает назначенный данному источнику прерывания приоритет с текущим приоритетом. В случае если у нового запроса на прерывание приоритет выше чем у текущего, то выполнение текущего приостанавливается и он помещается в соответствующую очередь. Иначе в соответствующую очередь помещается поступивший обработчик.
Планирование обработки прерываний в Windows NT.
Все источники прерываний делятся на несколько классов, и каждому уровню присваивается уровень запроса прерывания - Interrupt Request Level (IRQL). Этот уровень и представляет приоритет данного класса.
Поступление запроса на прерывание/исключение - вызов диспетчера прерываний, который
- Запоминает информацию об источнике прерывания
- Анализирует его приоритет
Если приоритет <= IRQL прерванного, то отложить в очередь, иначе текущий обработчик - в очередь, управление - новому.
Одна из важных задач планирования - обеспечение занятости внешних устройств
Для этого можно присваивать процессам высокий приоритет в периоды, когда они интенсивно используют ввод/ вывод.
Эти периоды легко прослеживаются:
- процесс блокируется про обращении к вводу/выводу.
- операции ввода/вывода обычно бывают сконцентрированы в отдельных частях программ.
Применяется стратегия HPF.