Вопрос №3 Принципы проектирования информационного обеспечения программного комплекса

Вид материалаДокументы

Содержание


Вопрос №8 Классификация и организация прерываний в ОС
Организация прерываний.
При векторном типе прерываний
Для опрашиваемого типа прерываний
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   28

Вопрос №8 Классификация и организация прерываний в ОС


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

Различают следующие типы прерываний:

- внешние (аппаратные)

- внутренние (исключения)

- программные.

Внешние прерывания – происходят асинхронно, т.е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств: других ЭВМ, аварийных и некоторых других датчиков технологического процесса).

Они бывают:

- маскируемые*, которые могут быть замаскированы программными средствами компьютера

- немаскируемые, запрос от которых таким образом замаскирован быть не может.

(* Маска прерывания – представляет собой двоичный код, разряды которого поставлены в соответствие запросам или классам прерывания. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса.

Внешние аппаратные прерывания инициируются контроллерами периферийного оборудования. Источники сигналов прерываний подключаются либо к выводу немаскируемых прерываний процессора (NMI), либо к выводу маскируемых прерываний (INTR). Линия NMI обычно предназначается для прерываний, вызываемых катастрофическими событиями, такими как, ошибки четности памяти или авария питания.

Прерывания от внешних устройств поступают в процессор через специальное устройство – программируемый контроллер прерываний PIC. Центральный процессор управляет контроллером через набор портов ввода-вывода, а контроллер в свою очередь сигнализирует процессору через вывод INTR. PIC предоставляет возможность программно разрешать и запрещать прерывания от конкретных устройств, а также назначать им приоритеты. Изготовители компьютерных систем так же, как и изготовители периферийного оборудования, назначают внешним устройствам определенные уровни приоритетов контроллера прерываний. Эти назначения выполняются в виде физических электрических соединений и не могут быть изменены программным образом.

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

Программные прерывания – вызываются следующими ситуациями:

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

- наличие в программе специальной команды прерывания INT n, используемой обычно программистом при обращении к специальным функциям операционной системы для ввода-вывода информации.

ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ.

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

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

При поступлении запроса прерывания компьютер выполняет следующую последовательность действий:
  1. определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов)
  2. определение типа выбранного запроса
  3. сохранение текущего состояния счетчика команд и регистра флагов
  4. определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика
  5. выполнение программы – обработчика прерывания
  6. восстановление сохраненных значений счетчика команд и регистра флагов прерванной программы
  7. продолжение выполнения прерванной программы

Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.

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

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

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

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




Рис. 14.1.  Выполнение прерывания в компьютере: tр - время реакции процессора на запрос прерывания; tс - время сохранения состояния прерываемой программы и вызова обработчика прерывания; tв - время восстановления прерванной программ

Механизм прерываний поддерживается аппаратными и программными средствами ОС. Различают векторный (vectored) и опрашиваемый (polled) типы прерываний. В обоих способах процессору передается информация об уровне приоритета.

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

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

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