Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tema2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
652.8 Кб
Скачать

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

Система прерываний переводит процессор на выполнение потока команд, отличного от того, который выполнялся до сих пор, с последующим возвратом к исходному потоку.

В зависимости от источника прерывания делятся на три класса:

  • внутренние;

  • внешние;

  • программные.

Внутренние прерывания (исключения) происходят при появлении аварийной ситуации в ходе исполнения некоторой инструкции программы – ошибки программирования.

Внешние (аппаратные) прерывания возникают в результате поступления сигналов от аппаратных устройств, в том числе от системного таймера, клавиатуры и других контроллеров внешних устройств компьютера. У процессора имеется специальный вход прерывания.

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

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

Диспетчеризация прерываний является важной функцией операционной системы, и эта функция реализована практически во всех мультипрограммных ОС.

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

На рис. 2.1 представлены уровни приоритетов при диспетчеризации различных прерываний в операционных системах семейства Windows NT.

Рис. 2.1. Уровни приоритетов при диспетчеризации прерываний в операционных системах Windows NT

Необработанные запросы на прерывание должны храниться в контроллерах устройств, чтобы не потеряться и дожидаться обслуживания при снижении уровня приоритета прерывания процессора, когда он закончит выполнение более срочных работ.

Особая роль в работе вычислительной системы играет системный таймер: на основании его прерываний обновляются системные часы, определяющие очередной момент вызова планировщика потоков, момент выдачи управляющего воздействия потоком реального времени (такие имеются в Windows NT) и многое другое. В виду важности немедленной обработки прерываний от таймера, ему дан весьма высокий уровень приоритета –более высокий, чем уровень любого устройства ввода-вывода.

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

А вот для программных прерываний, исходящих от модулей ядра ОС, отводится более высокий уровень запросов, имеющих название «диспетчерский /DPC». Этот уровень приоритета называется диспетчерским, потому что именно в эту очередь помещаются программные запросы, вызывающие диспетчер потоков.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]