11
хранится в RAM. Процедура обработки прерывания завершается по инструкции
IRET, по которой из стека восстанавливается содержимое сохранённых регистров.
Если во время обслуживания прерывания случайно изменить состояние
указателя или содержимого стека, то система «зависнет».
Причиной «зависания» может также являться переполнение стека. Это
возникает в случае вложенных прерываний.
Прерывания обслуживает контроллер, программно совместимый с
процессором, имеющий 8 входов запросов на прерывания (IRQх) от внешних
устройств, по которым запросы обрабатываются, и один выход запроса (INTR), по
которому запрос поступает на одноименный вход процессора.
Сигнал INTR с выхода контроллера поступает на одноимённый вход
процессора и процессор, обрабатывая это запрос, формирует шинный цикл
подтверждения прерывания INTR. В этом цикле контроллер передаёт по
шине
данных восьмиразрядный вектор прерывания. Этот вектор является номером в
таблице прерываний.
Контроллеры, совместимые с процессорами Intel, могут подключаться
каскадно (до 64 внешних устройства).
Обработка маскируемых прерываний разрешается инструкцией EI и
запрещается инструкцией DI.
Линии прерывания являются самым дефицитным ресурсом для
компьютерной системы, поэтому, желательно использовать эти линии разделяемо
между несколькими устройствами. Этот способ
для шин ISA невозможен, но этот
способ реализован для шин PCI.
Для шины PCI используются 4 линии запроса: A, B, C, D. Срабатывание
происходит по низкому уровню. Этим разделение линий управляют опции BIOS,
а также системы автоконфигурирования.
В мультипроцессорных системах система аппаратных прерываний более
сложная. Для реализации такой системы процессоры класса Pentium имеют
встроенные контроллеры прерываний (APIC), которые соединяются шиной APIC.