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


Процедуру обработки прерываний, в зависимости от их типа, выполняют входящие в состав ОС соответствующие программы — обработчики прерываний (IH — interrupt handler).
При возникновении прерывания, ОС должна обеспечивать запоминание состояния прерванного процесса и передачу управления соответствующему обработчику прерывания. Это может быть реализовано с использованием способа переключение контекста(context switching).
При реализации этого способа используются слова состояния программы PSW(program status word), которые управляют порядком выполнения команд и содержат ряд сведений о состоянии процесса. Существует три типа PSW:
текущее PSW, новое PSW старое PSW.
В однопроцессорной машине существует одно текущее PSW, которое содержит адрес следующей команды, подлежащей выполнению, а также типы прерываний, разрешенных и запрещенных на данный момент. Шесть новых PSW, которые содержат адреса размещения соответствующих обработчиков прерываний, и шесть старых PSW — по одному для каждого типа прерываний.
Когда происходит прерывание, то в первую очередь проверяется не является ли оно запрещенным (тогда оно либо задерживается либо игнорируется). Если прерывание является разрешенным, то аппаратурно производится следующее переключение PSW:
• текущее PSW становится старым PSW для прерывания этого типа;
• новое PSW для прерывания этого типа становится текущим PSW.
После такого замещения слов состояния, текущее PSW содержит адрес соответствующего обработчика прерываний, который начинает обрабатывать данное прерывание. Когда обработка прерывания завершается, ЦП начинает обслуживать либо тот процесс, который выполнялся в момент прерывания, либо готовый процесс с наивысшим приоритетом.
Новое PSW Старое PSW

Вызов супервизора Вызов супервизора

Прерывания ввода-вывода Текущее PSW Прерывания ввода-вывода
2 1
Внешние прерывания Внешние прерывания

Прерывания по контролю Прерывания по контролю
программы программы

Прерывания по контролю Прерывания по контролю
машины машины

Прерывания по рестарту Прерывания по рестарту

Описанная схема обработки прерываний не является единственно возможной.