Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11_Прерывания__и_причины_их...doc
Скачиваний:
14
Добавлен:
21.09.2019
Размер:
113 Кб
Скачать
☆

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

Контекстом программы (процесса) называется та информация, которую действия процесса могут проверять или изменять. Когда происходит прерывание, ОС запоминает состояние прерванного процесса и передает управление соответствующему обработчику прерываний. Это делается способом, получившим название переключение контекста (context switching).

Замещение psWпри обработке прерывания

При реализации этого способа используются слова состояния программы (Program Status Word – PSW), которые управляют порядком выполнения команд и содержат различную информацию относительно состояния процесса. Существуют три типа слов состояния программы: текущее PSW, новое PSW, старое PSW.

Текущее PSW записано в специальном регистре ЦП и содержит адрес следующей команды, подлежащей выполнению. С каждым типом прерываний связана определенная ячейка основной памяти. В такую ячейку обработчик прерываний записывает старое PSW, соответсвовшее состоянию прерванного процесса. Новое PSW для данного типа прерывания содержит постоянный адрес, по которому резидентно размещается обработчик прерываний этого типа. Когда происходит прерывание, происходит автоматическое переключение слов состояния программы следующим образом:

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

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

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

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

7. Приоритеты прерываний

Нередко поступает несколько запросов на прерывание. При этом они выстраиваются в очередь в соответствии со своими приоритетами:

1. прерывания от схем контроля идут вне очереди и блокируют обработку всех других прерываний.

2. от устройств ввода – вывода;

3 внешние;

4. программные прерывания или прерывания при обращении к ОС.

8. Вложенные прерывания

Прерывания могут также возникать во время обработки других прерываний. Каким образом система может обрабатывать такие многократные прерывания?

На основе приоритетов, приписанных каждому типу прерывания, для обработки из нескольких одновременно возникших прерываний должно быть выбрано одно. Учет приоритета может быть “встроен” в технические средства, как в IBM, либо он может определяться операционной системой, как в ЭВМ фирмы DEC. Так, например, команде вызова супервизора может быть приписан более высокий приоритет, чем прерыванию от системы ввода/вывода. Прерывания, класс которых имеет более низкий приоритет, могут быть разрешены, либо замаскированы. Если прерывание разрешено, то оно может прервать процессор, что обычно и происходит сразу же после того, как аппаратура зафиксирует прерывание. В этом случае более низкому приоритету прерывания соответствует более высокий приоритет его обработки; так в предыдущем примере прерыванию от системы ввода/вывода можно было бы присвоить более высокий приоритет обработки по сравнению с вызовом супервизора. При использовании стека прерываний относительные приоритеты не нужны. Следовательно, рассматривая прерывания, важно знать, какой тип приоритета имеется в виду. Замаскированное прерывание не может прервать процессор. Оно может быть утерянным, либо ждать обработки, что означает, что оно все еще известно аппаратуре. Если замаскированное прерывание ждет обработки, то последующее размаскирование или разрешение прерываний, инициирует его обработку.

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

Решение о маскировании или открытии прерывания на время обработки других прерываний может приниматься техническими средствами или может быть оставлено на усмотрение программы обработки прерывания. Дальнейшее появление прерываний того же самого типа должно маскироваться либо техническими средствами, либо программой обработки прерывания. Это необходимо для того, чтобы сохранить характеристики прерывания и состояние процесса для первого прерывания и избежать записи в фиксированные ячейки соответствующей информации при втором прерывании. Если аппаратура не выполняет маскирование соответствующего типа прерывания, то это должна делать программа обработки прерывания первого уровня, а демаскирование перед возобновлением нормальной работы может выполнять и программа обработки прерывания второго уровня.

Обработка многократных прерываний при наличии разных приоритетов облегчается присутствием аппаратных средств, позволяющих выделение разным приоритетам различных фиксированных ячеек для характеристик прерывания и для запоминания состояния процесса. В рамках одного приоритета управляющая программа должна хранить информацию о нескольких прерываниях, чтобы не заставлять каждое ждать, пока его предшественник будет обработан Например, довольно часто прерывание ввода/вывода можно обрабатывать в две стадии, причем на второй выполняются сравнительно медленные команды ввода/вывода, например подвод головки. Как только операционная система выдала такую команду устройству ввода/вывода, она может разрешить другие прерывания и, таким образом, обрабатывал накопившиеся прерывания. Такие прерывания, ожидающие обработки, обычно хранятся в очередях.