Модуль 3. Управление процессами


Тема 5. Контекст процесса и переключение контекста


Переключения контекста в EC ЭВМ

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

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

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

  1. Текущее ССП.
  2. Шесть новых ССП.
  3. Шесть старых ССП.

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

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

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

Image47.gif (33244 bytes)

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

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

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

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

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

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

Image48.gif (13249 bytes)

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

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

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

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

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

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

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

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