17
Этот механизм введен специально для того, чтобы, прежде всего, обеспечить
автоматическое переключение процессора в привилегированный режим с
возможностью исполнения любых команд.
Сигналы, вызывающие прерывания, формируются вне процессора или в
самом процессоре и могут возникать одновременно. Выбор одного из них для
обработки осуществляется на основе приоритетов, приписанных каждому
прерыванию. На рисунке А.3 изображен обычный порядок (
приоритеты)
обработки прерываний в зависимости от типа прерываний.
Учет приоритета может быть встроен в
технические средства, а также
определяться ОС, т.е. допускается программно-аппаратное управление
порядком обработки сигналов прерывания. Другой способ позволяет
применять различные дисциплины обслуживания прерываний.
Наличие сигнала прерывания не обязательно должно вызывать
прерывание исполняющейся программы. Процессор может обладать
средствами защиты от прерываний: отключение системы прерываний,
маскирование (запрет) отдельных сигналов прерывания. Программное
управление этими средствами позволяет ОС регулировать обработку
сигналов
прерывания, заставляя процессор обрабатывать их сразу по приходу;
откладывать обработку на некоторое время; полностью игнорировать
прерывания. Обычно операция прерывания выполняется только после
завершения выполнения текущей команды. Поскольку сигналы прерывания
возникают в
произвольные моменты времени, то на момент прерывания
может существовать несколько сигналов, которые могут быть обработаны
только последовательно в соответствии с назначенными приоритетами.
Программное управление
специальными регистрами маски (маскирование
сигналов прерывания) позволяет реализовать различные дисциплины
обслуживания:
- с относительными приоритетами, т.е. обслуживание не прерывается
даже при наличии запросов с
более высокими приоритетами. После окончания
обслуживания данного запроса обслуживается запрос с наивысшим
приоритетом для
организации такой дисциплины необходимо в программе
обслуживания данного запроса наложить маски на все остальные сигналы
прерывания или просто отключить систему прерываний;
- с абсолютными приоритетами, т.е. всегда обслуживается прерывание
с наивысшим приоритетом. На время обработки маскируются все запросы с
более низким приоритетом, причем возможно многоуровневое прерывание
(т.е. прерывание программ обработки прерываний);
- по принципу стека (по дисциплине LCFS – Last Come First Served –
последним пришел, первым обслужен), т.е. запросы с
более низким
приоритетом могут прерывать обработку прерывания с более высоким
приоритетом. Для этого маска не накладывается ни на один из сигналов
прерывания и не выключается система прерываний.
Для правильной реализации последних двух дисциплин нужно
обеспечить полное маскирование системы прерываний при выполнении шагов
18
1-4 и 6-7. Это необходимо для того, чтобы не потерять запрос и правильно его
обслужить. Многоуровневое прерывание должно происходить на этапе
обработки прерывания, а не на этапе перехода с одного процесса вычислений
на другой.
Достарыңызбен бөлісу: