Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубаков А.А. Операционные системы. Томск, 1999.....doc
Скачиваний:
16
Добавлен:
07.11.2018
Размер:
1.46 Mб
Скачать

3.2. Основная концепция обработки прерываний

В различных ЭВМ существует различный набор типов прерываний, которые можно разделить на 6 классов.

  1. Программы-прерывания по системной директиве. Инициатор – активный процесс, выполнивший команду SVC (обращение к супервизору), то есть запрос на предоставление ОС какой-либо системной вычислительной услуги.

  2. Прерывания ввода-вывода. Инициируются устройством ввода/вывода (УВВ) и сигнализируют ЦП о том, что произошло изменение состояния канала ввода-вывода (КВВ) или УВВ (например: завершение операции, ошибка, переход устройства в состояние готовности).

  3. Внешние прерывания. Причинами их является нажатие операторами клавиш на панели ЭВМ или прием сигнала прерывания от другого ЦП в мультипроцессорной системе или сигнала от модема.

  4. Прерывание по рестарту. Нажатие оператором на панели управления кнопки рестарта или Reset.

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

  6. Прерывания по контролю машины вызываются аппаратными ошибками.

Планирование процессов включает в себя решение следующих задач:

  1. Определение момента времени для смены выполняемого процесса.

  2. Выбор процесса на выполнение из очереди готовых процессов.

  3. Переключение контекстов "старого" и "нового" процессов.

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

3.3. Переключение контекста в ec эвм

В основе процедуры переключения контекста лежит использование Program Status Word (PSW) или Слова Состояния Процесса (CCП) - это аппаратный регистр ЭВМ, который управляет работой активного процесса и содержит следующие данные:

  • текущее состояние ЦП (счет, ожидание);

  • ключ защиты памяти процесса;

  • адрес следующей команды процесса;

  • код прерывания процесса;

  • маску прерываний (код возможных прерываний);

  • признак результата выполненной команды.

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

В ЭВМ типа ЕС для работы с прерываниями используются 3 типа ССП, размещенных в фиксированных ячейках ОП.

  1. Текущее ССП.

  2. Шесть новых ССП.

  3. Шесть старых ССП.

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

Когда происходит разрешенное прерывание, осуществляется автоматическое переключение ССП следующим образом (рис.3.2):

  1. Текущее ССП становится старым для прерывания соответствующего типа.

  2. Новое ССП становится текущим. Таким образом, управление передается обработчику прерываний, который выполняет обработку.

  3. Восстанавливается текущее ССП прерванного процесса.

Рис. 3.2. Переключение контекста.

Аналогичная процедура происходит в MS DOS. С нулевого адреса ОП располагается таблица векторов прерываний.

Область векторов прерываний охватывает адреса от 0 до 3FFh в шестнадцатеричном исчислении. Каждый 4-х байтный участок этой области содержит адрес первой команды подпрограммы обработки прерываний (вектор прерываний), которая должна вызываться при возникновении прерывания конкретного типа (рис.3.3).

Объем памяти векторов прерываний 256*4=1024 байт.

При возникновении прерываний ОС выполняет следующую последовательность операций:

  1. Запоминает адрес текущей команды из регистров CS:IP в стеке вместе с регистром флагов (состояний), представленным на рис.3.4.

  2. Загружает в CS:IP адрес обработчика прерываний.

  3. Обработчик прерываний завершается командой IRET (возврат управления), которая восстанавливает из стека содержимое СS:IP и регистр флагов состояния, структура которого приведена на рисунке 3.4.

Рис. 3.3. Таблица вектора прерываний

Д ля работы с прерываниями используются следующие команды микропроцессора:

Sti - set interrupt (I=1, разрешить прерывание)

Cli - clear interrupt (I=0, запретить прерывание)

Если за командой CLI не следует STI, то машина “зависает”, так как клавиатура не реагирует на нажатие клавиш. Для программирования прерываний используется IMR - регистр маски прерываний.

Микросхема I8259 (устройство управления прерываниями) для I8086 имеет 8 уровней приоритетов (IRQ0 - IRQ7) (для старших моделей МП - 16).

Можно запретить аппаратные прерывания. Запрет (блокировка) может выполняться для ускорения критической части кода целиком.

Для маскирования аппаратного прерывания необходимо использовать порт 24H. В 1’В’ устанавливаются биты, соответствующие номеру прерывания.

Рис. 3.4 Регистр флагов состояний