Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Маскирование прерываний. Обработка прерываний в мультипрограммной системе




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

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

Упорядоченное обслуживание запросов прерываний наряду со схемами приоритетной обработки может выполняться механизмом маскирования запросов. Программное управление специальными регистрами маски – маскирование сигналов прерывания независимо от уровня приоритета – позволяет реализовать различные дисциплины обслуживания:

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

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

§ по принципу стека (по дисциплине LCFSlast come first served)– запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для реализации такой дисциплины необходимо не накладывать маски ни на один сигнал прерывания и не выключать систему прерываний.

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

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

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

На первом этапе при появлении запроса на прерывание идентификация сигнала выполняется специальным системным программным модулем, который называется супервизором (или диспетчером) прерываний. Он ненадолго запрещает все прерывания, сохраняет контекст прерываемого процесса и выясняет причину прерывания.

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

Замечание. Обработчик прерываний (независимо от его приоритета) всегда имеет приоритет более высокий, чем поток, выполняемый в обычной последовательности, определяемой планировщиком потоков.

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

Контрольные вопросы

1. Что такое прерывание? Когда оно было введено в действие и с какой целью?

2. Из каких этапов состоит механизм обработки прерывания?

3. Можно ли запретить все прерывания на время работы обработчика прерываний? Почему?

4. К какому типу прерываний относятся прерывания клавиатуры? Прерывания таймера? Возникновение деления на ноль в ходе выполнения программы? Обращение к запрещённой странице памяти, занятой кодом ОС?

5. Приведите примеры аппаратных прерываний.

6. Могут ли в ходе нормальной работы программы возникать исключительные ситуации? Почему?

7. Какие существуют способы реализации механизма аппаратных прерываний? В чём их различие?

8. Что такое маскирование прерываний и для чего оно может применяться?

9. Каким образом можно реализовывать различные дисциплины обслуживания прерываний с помощью маскирования?

10. В чём различия между дисциплиной обслуживания прерываний с относительными приоритетами и с абсолютными?

11. Где содержится информация об уровне приоритета текущего обработчика прерываний?

12. Каковы функции супервизора прерываний?

13. Чем отличается реализация механизма прерывания в мультипрограммной системе от однопрограммной системы?

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

 




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 7064; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.