2

2.7 Общие сведения о системе прерываний

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

                   В IBM – совместимых ПЭВМ прерывания делятся на следующие категории:

1)      внешние аппаратные прерывания, возникающие при событиях вне МП;

2)      внешние аппаратные  прерывания, вырабатываемые самим МП;

3)      программные прерывания, инициируемые выполняемой программой, как правило, по специальной команде.

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

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

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

IBM-совместимые ПВЭМ поддерживают 256 типов прерываний, определяемых источником и причиной прерывания. Для их распознавания и разделения  во времени каждому типу прерывания присваивается определенный код (от 0 до 255) и приоритет (уровень). Число уровней может варьироваться от 4 до 15. Одновременные поступление в МП сигналов прерываний одного уровня обычно не допускается. Поэтому прерывания от ПУ, которые могут функционировать одновременно, должны иметь различный уровень.

Для обработки прерываний в начальных ячейках ОЗУ располагается таблица векторов прерываний размером 254х4=1024 байта. Каждое четырёхбайтовое поле этой таблицы называется вектором прерывания и содержит адрес обработчика прерываний в виде номера первого параграфа в сегменте (старшее слово) и относительного адреса (младшее слово). Каждый вектор прерывания однозначно адресуется по сигналу прерывания путём сдвига его кода на два разряда влево, что эквивалентно умножению на 4.

Обработка прерывания состоит в следующем:

1)      формируется его код, который поступает в МП;

2)      в стеке сохраняется текущее состояние МП (содержимое регистров CS и IP) с целью возможного последующего восстановления;

3)       по соответствующему вектору прерывания осуществляется переход на программу обработки прерывания данного типа;

4)       выполняется собственно обработка прерывания;

5)      восстанавливается исходное состояние МП, вследствие чего либо продолжается выполнение прерванной программы, либо завершается ее выполнение, либо происходит останов МП (в зависимости от типа прерывания).