Материалы

Таблица дескрипторов прерываний

Рейтинг:   / 0
ПлохоОтлично 

Переход на обработчик происходит через дескрипторы, содержащиеся в таблице дескрипторов прерываний Interrupt Descriptor Table (IDT). Каждый дескриптор связывает источник прерывания или исключения с подпрограммой (шлюз подпрограммы-обработчика) или с задачей (шлюз задачи) которая будет вызвана в ответ на событие, связанное с прерыванием (см. рисунок ниже).

Схема вызова обработчика прерывания

Начало и предел IDT содержатся в регистре IDT (RIDT). Таким образом, таблица шлюзов прерываний может находиться в любом месте физической памяти (в отличие от реального режима, где таблица векторов находится в младших адресах). Более того, ничто не мешает иметь системе несколько IDT. Для переключения на новую IDT требуется всего лишь изменить значение RIDT, для чего имеются привилегированные команды LIDT и SIDT.

Далее приведен формат дескрипторов шлюзов, которые могут содержаться в IDT (см. рисунок ниже).

Формат дескрипторов шлюзов

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

Схема вызова программы через шлюз прерывания
Яндекс.Метрика