Операционные системы

Переключение контекста в 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. Таблица вектора прерываний

Содержание раздела