double arrow

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

Прерывание и типы прерываний

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

В компьютерах фирмы IBM возможны следующие типы прерываний:

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

б) внешние (асинхронные) прерывания. Вызываются асинхронными событиями, которые происходят вне прерываемого процесса:

- прерывания от таймера;

- прерывания от внешних устройств;

- прерывания по нарушению питания;

- прерывания с пульта оператора;

- прерывания от другого процессора или другой ЭВМ и др.

в) внутренние (синхронные) прерывания. Вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями:

- при нарушении адресации (например, неверный адрес команды или страницы виртуальной памяти);

- при попытке выполнить операцию с неправильным кодом;

- при делении на нуль;

- при переполнении или исчезновении порядка и др.

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

Для корректного переключения процессора с одного процесса на другой в случае возникновения прерывания необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется КС для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно находится в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие потока исполнения (threads of execution).

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

а) с относительными приоритетами – обслуживание не прерывается при наличии запросов с более высокими приоритетами;

б) с абсолютными приоритетами – обслуживание не прерывается при наличии запросов с более высокими приоритетами;

в) LCFS (Last come first served – «последним пришел – первым обслужен»).

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

В однопроцессорной машине имеется одно текущее PSW, набор новых PSW (по одному на каждый тип прерываний) и набор старых PSW (по одному на каждый тип прерываний). Новое PSW для данного типа прерывания содержит адрес, по которому размещается обработчик прерываний этого типа.

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

1) Текущее PSW становится старым PSW для прерывания этого типа

2) Новое PSW для прерывания этого типа становится текущим

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

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

Пример 1

Рассмотрим, как может происходить операция разблокирования процесса, ожидающего ввода-вывода (см. рис.5.5). При исполнении процессором некоторого процесса (на рис.5.5 - процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановка. Далее, операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рис.5.5 - процесс 2), и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рис.5.5 был выбран разблокированный процесс). В результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии «исполнение».

Рисунок 5.5 - Выполнение операции разблокирования процесса


Сейчас читают про: