The design of the UNIX Operating System 97 страница



 

Рассматривая кооперацию процессов и взаимоисключения, мы говорили о существовании критических секций внутри ядра операционной системы, при выполнении которых необходимо исключить всякие прерывания от внешних устройств. Для запрещения прерываний, а точнее, для невосприимчивости про-цессора к внешним прерываниям обычно существуют специальные команды , которые могут маскировать (запрещать) все или некоторые из прерываний устройств ввода-вывода . В то же время определенные кри-зисные ситуации в вычислительной системе (например, неустранимый сбой в работе оперативной памя-ти) должны требовать ее немедленной реакции . Такие ситуации вызывают прерывания, которые невоз-можно замаскировать или запретить и которые поступают в процессор по специальной линии шины пре-рываний, называемой линией немаскируемых прерываний (NMI – Non-Maskable Interrupt).

 

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

 

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

 

Для внешних прерываний характерны следующие особенности.

 

• Внешнее прерывание обнаруживается процессором между выполнением команд (или между ите-рациями в случае выполнения цепочечных команд).

• Процессор при переходе на обработку прерывания сохраняет часть своего состояния перед вы-полнением следующей команды.


Основы операционных систем 134

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

 

Исключительные ситуации возникают во время выполнения процессором команды. К их числу относятся ситуации переполнения, деления на ноль, обращения к отсутствующей странице памяти (см. часть III) и т. д. Для исключительных ситуаций характерно следующее.

 

• Исключительные ситуации обнаруживаются процессором во время выполнения команд.

 

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

 

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


Дата добавления: 2021-01-21; просмотров: 142; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!