ВУЗ:
Составители:
28
Принципы обработки прерываний
Конечно, применяемый в операционных системах механизм обработки
внутренних и внешних прерываний в основном зависит от того, какая аппарат-
ная поддержка обработки прерываний обеспечивается конкретной аппаратной
платформой. К счастью, к настоящему моменту (и уже довольно давно) основ-
ные производители компьютеров де-факто пришли к соглашению о базовых
механизмах прерываний.
Если говорить не очень точно и конкретно, суть принятого на сегодня
механизма состоит в том, что каждому возможному прерыванию процессора
(будь то внутреннее или внешнее прерывание) соответствует некоторый фик-
сированный адрес физической оперативной памяти. В тот момент, когда про-
цессору разрешается прерваться по причине наличия внутренней или внешней
заявки на прерывание, происходит аппаратная передача управления на ячейку
физической оперативной памяти с соответствующим адресом − обычно адрес
этой ячейки называется «вектором прерывания» (как правило, заявки на внут-
реннее прерывание, т. е. заявки, поступающие непосредственно от процессора,
удовлетворяются немедленно).
Дело операционной системы − разместить в соответствующих ячейках
оперативной памяти программный код, обеспечивающий начальную обработку
прерывания и инициирующий полную обработку.
В основном, ОС UNIX придерживается общего подхода. В векторе пре-
рывания, соответствующем внешнему прерыванию, т. е. прерыванию от неко-
торого внешнего устройства, содержатся команды, устанавливающие уровень
выполнения процессора (уровень выполнения определяет, на какие внешние
прерывания процессор должен реагировать незамедлительно) и осуществляю-
щие переход на программу полной обработки прерывания в соответствующем
драйвере устройства. Для внутреннего прерывания (например, прерывания по
инициативе программы пользователя при отсутствии в основной памяти нуж-
ной страницы виртуальной памяти, при возникновении исключительной ситуа-
ции в программе пользователя и т. д.) или прерывания от таймера в векторе
прерывания содержится переход на соответствующую программу ядра
ОС UNIX.
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »