2.7
Общие сведения о системе прерываний
Первоначально системы прерываний ЭВМ обеспечивали главным образом асинхронную работу процессора и ПУ, чтобы отказаться от непрерывного опроса процессором периферийного оборудования. Однако концепция прерываний оказались полезной и для вызова системных подпрограмм, так как в этом случае легко изменить или заменить подпрограмму вследствие того, что обращение к ней производится не по адресу, а по номеру прерывания.
В IBM –
совместимых ПЭВМ прерывания делятся на
следующие категории:
1) внешние аппаратные прерывания, возникающие при событиях вне МП;
2) внешние аппаратные прерывания, вырабатываемые самим МП;
3) программные прерывания, инициируемые выполняемой программой, как правило, по специальной команде.
Сигналы внешних аппаратных прерываний вырабатываются периферийными и другими устройствами, выставляются на системной ширине и перед передачей в МП предварительно обрабатываются специальным устройством – контроллером прерываний. В качестве примером ситуации, вызывающих прерывания данной категории, можно назвать нажатие клавиши на клавиатуре, обнаружение ошибки памяти, сбой питания, сигнал от таймера. Внешние аппаратные прерывания делятся на маскируемые и немаскируемые. Первые могут быть заблокированы, а вторые – нет. Немаскируемые прерывания возникают в случае событий с катастрофическими последствиями.
Примерами событий , приводящих к внутренним аппаратным прерываниям, являются попытка деления на нуль, правления пошаговым режимом работы МП (для отладки программ), достижение контрольной точки, переполнение разрядовой сетки.
Программные прерывания задаются программистом в программе путем записи специальной команды и используются для получения сервисных услуг ОС.IBM-совместимые ПВЭМ поддерживают 256 типов прерываний, определяемых источником и причиной прерывания. Для их распознавания и разделения во времени каждому типу прерывания присваивается определенный код (от 0 до 255) и приоритет (уровень). Число уровней может варьироваться от 4 до 15. Одновременные поступление в МП сигналов прерываний одного уровня обычно не допускается. Поэтому прерывания от ПУ, которые могут функционировать одновременно, должны иметь различный уровень.
Для обработки прерываний в начальных ячейках ОЗУ располагается таблица векторов прерываний размером 254х4=1024 байта. Каждое четырёхбайтовое поле этой таблицы называется вектором прерывания и содержит адрес обработчика прерываний в виде номера первого параграфа в сегменте (старшее слово) и относительного адреса (младшее слово). Каждый вектор прерывания однозначно адресуется по сигналу прерывания путём сдвига его кода на два разряда влево, что эквивалентно умножению на 4.
Обработка прерывания состоит в следующем:
1) формируется его код, который поступает в МП;
2) в стеке сохраняется текущее состояние МП (содержимое регистров CS и IP) с целью возможного последующего восстановления;
3) по соответствующему вектору прерывания осуществляется переход на программу обработки прерывания данного типа;
4) выполняется собственно обработка прерывания;
5) восстанавливается исходное состояние МП, вследствие чего либо продолжается выполнение прерванной программы, либо завершается ее выполнение, либо происходит останов МП (в зависимости от типа прерывания).