Операционные системы/Аппарат прерываний

Материал из eSyr's wiki.

Версия от 12:26, 14 ноября 2012; 178.140.19.145 (Обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Прерывание - событие в компьютере, при возникновении которого в процессоре происходит предопределенная последовательность действий. Прерывания возникают в нестандартных ситуациях (например, в регистре команд декодируется операция с неизвестным кодом).мы заранее оговариваем какого рода нестандартные ситуации могут произойти. Прерывание – программно-аппаратное средство.

Прерывания бывают:

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

Содержание

[править] Последовательность действий в ВС при обработке прерываний

Обработка прерываний проходит в два этапа. Первый этап – аппаратный, он выполняется ЦП. Второй этап – программный, он выполняется ОС.

[править] Аппаратный этап обработки прерываний

На аппаратном этапе обработки прерываний процессором производятся следующие действия:

  1. Включение режима блокировки прерываний. В этом режиме все поступающие прерывания либо игнорируются, либо становятся в очередь (это зависит от конкретной архитектуры).
  2. Завершение выполнения текущей команды.
  3. Сохранение актуального состояния (некоторого подмножества регистров) процессора в аппаратный буфер ("малое упрятывание").
  4. Присвоение регистру адреса некоторого заранее определенного значения (адреса обработчика), соответствующего программному этапу обработки прерываний. В зависимости от модели организации прерываний это может быть один и тот же адрес для всех прерываний или свой адрес для каждого типа прерываний.

[править] Программный этап обработки прерываний

На программном этапе сначала определяется тип прерывания.

  • Прерывание может быть «коротким», т.е не требующим больших ресурсов и значительного времени обработки. Пример: прерывание, связанное с таймером. В этом случае происходит обработка и осуществляется выход из прерывания (т.е. восстановление состояние процессора в точке прерывания (за счет аппаратного буфера), возврат в точку прерывания и одновременное снятие блокировки прерывания).
  • Если прерывание не «короткое», то возможны две ситуации:
    • Прерывание «фатальное», т.е. такое, после которого продолжение выполнения прерванной программы невозможно. В этом случае происходит снятие блокировки прерываний и ОС завершает выполнение программы, т.е. выполняет те действия, которые освобождают ресурсы.
    • Прерывание не «фатальное», т.е. прерванная программа еще будет выполняться после его обработки. В этом случае ОС сохраняет все регистры, соответствующие контексту процесса (“полное упрятывание”) в программный буфер, затем снимает блокировку прерываний (с этого места обработка прерывания уже может быть прервана другим прерыванием) и завершает обработку прерывания.

Схема программного этапа обработки прерываний:

[править] Модели организации прерываний

Рассмиотим три модели организации прерываний:

  1. Использование «регистра прерываний»
  2. Использование вектора прерываний
  3. Использование регистра «слово состояние процессора»

[править] Использование «регистра прерываний»

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

[править] Использование вектора прерываний

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

[править] Использование регистра «слово состояние процессора»

Код прерывания аппаратно помещается в регистр «слово состояние процессора», после этого программа-обработчик прерывания, выбрав этот код, принимает решение о дальнейшей последовательности действий, которые необходимо осуществить для обработки прерывания, стоящего под этим кодом.

Личные инструменты
Разделы