Понятие прерывания 2 Цель и механизм
Скачать 58.82 Kb.
|
Контроллер прерыванияНеобходимо быть знакомым с особенностями функционирования и программирования контроллера прерываний. Контроллер прерываний может выполнять следующий набор операций: маскирование запросов на прерывание, то есть временное запрещение реакции на них; установка приоритетов запросов по различным входам, то есть разрешение конфликтов при одновременном приходе нескольких запросов на прерывание; работа в качестве основного контролера (Master) или подчиненного (Slave). Логически в контроллере можно выделить 4 основных узла : Регистр входных запросов Регистр маски Схема приоритетов Регистр обслуживаемых запросов IF Процедура прерывания Сигнал IRQ8
запросов Последовательность обработки внешнего аппаратного прерывания имеет следующий вид: Сигнал запроса прерывания поступает на вход регистра запросов и устанавливает в 1 соответствующий бит. Значение регистра маски, равное 0, разрешает прохождение сигнала на схему анализатора приоритетов. (значение равное 1 запрещает) . Схема приоритетов формирует сигнал, поступающий на вход регистра обслуживаемых запросов. Сигнал запроса прерывания поступает на вход регистра обслуживаемых запросов и дает разрешение на установку в 1 его бита ( однако не устанавливает). Одновременно сигнал поступает на вход INT . Процессор регистрирует поступление сигнала, если установлен флаг разрешения прерываний IF в регистре флагов ( сброс флага IF командой cli запрещает аппаратные прерывания) Микропроцессор, получив сигнал INT, формирует выходной сигнал INTA, который устанавливает бит регистра обслуживаемых запросов, разрешенный сигналом запроса прерывания (см. п.4) и сбрасывает аналогичный бит регистра запросов. Одновременно процессор сбрасывает флаг IF в регистре флагов, запрещая все аппаратные прерывания . Поскольку процессор, получив сигнал INT, сбрасывает IF , при входе в обработчик все прерывания оказываются запрещенными и программа не может быть прервана внешними сигналами. Командой sti устанавливают флаг IF и разрешают прохождение запросов прерывания в процессор . Однако все уровни прерываний , начиная с текущего, остаются заблокированными в контроллере. В результате работа обработчика может быть прервана только при поступлении запроса прерывания более высокого приоритета . Такая ситуация называется вложенным прерыванием. Выполнение в обработчике команд , реализующих приказ конца прерываний EOI, снимает блокировку в контроллере , и начиная с этого момента запрос прерывания любого уровня прервет выполнение обработчика. Особенно неприятной может оказаться ситуация , когда обработчик прерывается сигналом запроса прерывания того же уровня. Это приводит к тому, что программа обработчика, не дойдя до конца , опять начинает выполняться с самого начала. Для избежания данной ситуации обработчик прерываний должен быть предусматривать повторную входимость. ВыводыПрерывание можно рассматривать как некоторое особое событие в системе, требующее моментальной реакции. Механизм прерываний отлично подходит для управления событиями в вычислительной системе. Система распознает прерывания и при их возникновении запускает процедуру, соответствующую номеру прерывания. Существуют зарезервированные для использования центральным процессором прерывания. Прерывания бывают аппаратными, программными и исключениями. Чтобы связать адрес обработчика прерывания с номером прерывания используется таблица векторов прерываний. Обработка прерываний |