Аппаратные и программные прерывания. Внутренние и внешние прерывания.
Прерывание (interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
В зависимости от источника возникновения сигнала, прерывания делятся на:
- асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (Interrupt request, IRQ);
Аппаратные прерывания делятся на:
- маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
- немаскируемые (Non-maskable interrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.
- синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
- программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Ввод-вывод по прерываниям подразумевает, что действия по обмену информацией инициируют сами периферийные устройства, генерируя сигнал прерывания. При восприятии сигнала прерывания микропроцессор приостанавливает выполнение текущей программы, временно запоминает ее состояние (как минимум, запоминается содержание PSW, РС) идентифицирует прерывающее устройство и осуществляет обмен информацией. После завершения обмена восстанавливается состояние прерванной программы и возобновляется ее выполнение. В данном режиме на ввод-вывод расходуется гораздо меньше времени микропроцессора, чем в программно-управляемом ВВ, поэтому система может выполнить больше полезной работы или обслужить больше периферийных устройств.
Ввод-вывод по прерываниям, однако, требует усложнения аппаратных средств – созданиясистемы прерываний.
Структура контроллера приоритетных прерываний имеет вид
Обозначения:
- IRn- линии запроса прерываний от периферийных устройств;
- INTR– сигнал запроса прерывания от контролера к процессору;
- INTA– сигнал подтверждения приёма запроса на прерывание, запрос вектора прерывания;
- NMI– запрос на немаскируемое прерывание с фиксированным вектором от устройств не обслуживаемых контроллером прерываний (например сигнал от блока питания о исчезновении питающего напряжения или поломке);
При поступлении запроса на прерывание IR(N) от периферийного устройства (ПУ) контроллер прерываний посылает запрос на прерывание (INT) в центральный процессор. Процессор разрешает обработку прерывания, формируя сигнал подтверждения #INTA, который, поступая в контроллер прерываний, вызывает формирование на шине данных вектора прерывания. Вектор определяют программу обработки. Обработка прерывания произойдет после завершения выполнения текущей команды процессором.
Контроллер прерываний позволяет управлять прерываниями от устройств, разрешая или запрещая некоторые из них (путем маскирования), а так же позволяет менять приоритеты. Режим работы контроллера управляется процессором через шину контроля.
Дата добавления: 2016-06-13; просмотров: 5413;