Вопрос №3 Принципы проектирования информационного обеспечения программного комплекса
Вид материала | Документы |
СодержаниеВопрос №8 Классификация и организация прерываний в ОС Организация прерываний. При векторном типе прерываний Для опрашиваемого типа прерываний |
- Е. В. Чепин московский инженерно-физический институт (государственный университет), 30.11kb.
- Рабочая программа учебной дисциплины (модуля) case-средства проектирования программного, 143.56kb.
- Технология программирования, 643.21kb.
- Базы данных, 3110.93kb.
- А. А. Дюмин московский инженерно-физический институт (государственный университет), 30.84kb.
- Учебно-методический комплекс дисциплины разработка и стандартизация программных средств, 362.73kb.
- Методика выбора программного обеспечения турфирмой Антон Россихин (само-софт), 34.31kb.
- С. Д. Романин московский инженерно-физический институт (государственный университет), 24.74kb.
- Примерная программа наименование дисциплины Проектирование и архитектура программных, 182.2kb.
- Рабочая программа учебной дисциплины "системы автоматизированного проектирования электроустановок, 119.83kb.
Вопрос №8 Классификация и организация прерываний в ОС
Прерывание (interrupt) – это прекращение выполнение текущей команды или текущей последовательности команд для обработки некоторого события специальной программой – обработчиком прерывания (interrupt handier), с последующим возвратом к выполнению прерванной программы. Прерывание используется для быстрой реакции процессора на особые ситуации, возникающие при выполнении программы и взаимодействии с внешними устройствами.
Различают следующие типы прерываний:
- внешние (аппаратные)
- внутренние (исключения)
- программные.
Внешние прерывания – происходят асинхронно, т.е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств: других ЭВМ, аварийных и некоторых других датчиков технологического процесса).
Они бывают:
- маскируемые*, которые могут быть замаскированы программными средствами компьютера
- немаскируемые, запрос от которых таким образом замаскирован быть не может.
(* Маска прерывания – представляет собой двоичный код, разряды которого поставлены в соответствие запросам или классам прерывания. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса.
Внешние аппаратные прерывания инициируются контроллерами периферийного оборудования. Источники сигналов прерываний подключаются либо к выводу немаскируемых прерываний процессора (NMI), либо к выводу маскируемых прерываний (INTR). Линия NMI обычно предназначается для прерываний, вызываемых катастрофическими событиями, такими как, ошибки четности памяти или авария питания.
Прерывания от внешних устройств поступают в процессор через специальное устройство – программируемый контроллер прерываний PIC. Центральный процессор управляет контроллером через набор портов ввода-вывода, а контроллер в свою очередь сигнализирует процессору через вывод INTR. PIC предоставляет возможность программно разрешать и запрещать прерывания от конкретных устройств, а также назначать им приоритеты. Изготовители компьютерных систем так же, как и изготовители периферийного оборудования, назначают внешним устройствам определенные уровни приоритетов контроллера прерываний. Эти назначения выполняются в виде физических электрических соединений и не могут быть изменены программным образом.
Внутренние прерывания – происходят синхронно, т.е. возникают по конкретной причине и можно предугадать возникновение такого прерывания. Например, при делении на ноль, появление ошибки в работе аппаратуры самой ЭВМ, переполнение разрядной сетки, выход из установленной для данной программы области памяти, затребование периферийным устройством операции ввода-вывода, завершении операции ввода-вывода периферийным устройством или возникновение при этой операции особой ситуации и др.
Программные прерывания – вызываются следующими ситуациями:
- особый случай, возникший при выполнении команды и препятствующий нормальному продолжению программы (переполнение, нарушение защиты памяти, отсутствие нужной страницы в оперативной памяти и т.п.)
- наличие в программе специальной команды прерывания INT n, используемой обычно программистом при обращении к специальным функциям операционной системы для ввода-вывода информации.
ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ.
Любая особая ситуация, вызывающая прерывание, сопровождается сигналом, называемым запросом прерывания. Запросы прерываний от внешних устройств поступают в процессор по специальным линиям, а запросы, возникающие в процессе выполнения программы, поступают непосредственно изнутри микропроцессора. Механизмы обработки прерываний обоих типов схожи.
Каждому запросу прерывания в компьютере присваивается свой номер (тип прерывания), используемый для определения адреса обработчика прерывания.
При поступлении запроса прерывания компьютер выполняет следующую последовательность действий:
- определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов)
- определение типа выбранного запроса
- сохранение текущего состояния счетчика команд и регистра флагов
- определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика
- выполнение программы – обработчика прерывания
- восстановление сохраненных значений счетчика команд и регистра флагов прерванной программы
- продолжение выполнения прерванной программы
Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.
Задача программиста – составить программу – обработчик прерывания, которая выполняла бы действия, связанные с появлением запроса данного типа, и поместить адрес начала этой программы в специальной таблице адресов прерывания. Программа-обработчик, как правило, должна начинаться с сохранения состояния тех регистров процессора, которые будут ею изменяться, и заканчиваться восстановлением состояния этих регистров. Программа-обработчик должна завершаться специальной командой, указывающей процессору на необходимость возврата в прерванную программу.
Время реакции – это время между появлением сигнала запроса прерывания и началом выполнения обработчика прерывания в том случае, если данное прерывание разрешено к обслуживанию.
Время реакции зависит от момента, когда процессор определяет факт наличия запроса прерывания. Опрос запросов прерываний может проводиться либо по окончании выполнения очередного этапа команды (например, считывание команды, считывание первого операнда и т.д.), либо после завершения каждой команды программы. Первый подход обеспечивает более быструю реакцию, но при этом необходимо при переходе к обработчику прерывания сохранять большой объем информации о прерываемой программе, включающей состояние буферных регистров процессора, номера завершившегося этапа и т.д. При возврате из обработчика также необходимо выполнить большой объем работы по восстановлению состояния процессора. Во втором случае время реакции может быть достаточно большим. Однако при переходе к обработчику прерывания требуется запоминание минимального контекста прерываемой программы (обычно это счетчик команд и регистр флагов). В настоящее время в компьютерах чаще используется распознавание запроса прерывания после завершения очередной команды.
Глубина прерывания – максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний.
Рис. 14.1. Выполнение прерывания в компьютере: tр - время реакции процессора на запрос прерывания; tс - время сохранения состояния прерываемой программы и вызова обработчика прерывания; tв - время восстановления прерванной программ
Механизм прерываний поддерживается аппаратными и программными средствами ОС. Различают векторный (vectored) и опрашиваемый (polled) типы прерываний. В обоих способах процессору передается информация об уровне приоритета.
При векторном типе прерываний в процессор передается также адрес обработчика прерывания. Для векторного типа схема обработки такова: электрический сигнал – запрос на подтверждение – вектор прерывания – обработчик.
Вектор прерывания – вектор начального состояния прерывающей программы. Вектор прерывания содержит всю необходимую информацию для перехода к прерывающей программе, в том числе ее начальный адрес. Каждому запросу (уровню) прерывания, каждому периферийному устройству соответствует свой вектор прерывания, способный инициировать выполнение соответствующей прерывающей программы. Векторы прерывания обычно находятся в специально выделенных фиксированных ячейках памяти.
Для опрашиваемого типа прерываний схема обработки такова: сигнал – запрос на подтверждение – уровень приоритета. Каждый уровень связан с несколькими устройствами. Вызываются все обработчики данного уровня. Один опознает свое устройство. Для упорядочивания работы обработчиков введен механизм приоритетных очередей, которые обслуживает модуль ОС – диспетчер прерываний.