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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT) используется в архитектуре x86 и служит для определения корректного ответа на прерывания и исключения.

В микропроцессорах 8086/80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение. Начиная с процессора 80286, адрес в физической памяти и размер таблицы прерываний определяется 48-битным регистром IDTR.

В IDT используются следующие типы прерываний: аппаратные прерывания, программные прерывания и прерывания, зарезервированные процессором, называемые исключениями (первые 32) на случай возникновения некоторых событий (деление на ноль, ошибка трассировки, переполнение).

В реальном режиме элементом IDT является 32-битный FAR-адрес обработчика прерывания.

В защищённом режиме элементом IDT является шлюз прерывания длиной 8 байт, содержащий сегментный (логический) адрес обработчика прерывания, права доступа и др.

В длинном режиме размер дескриптора прерывания увеличен до 16 байт.

В режиме V86 при использовании расширения VME таблица векторов располагается по виртуальному адресу 0000:0000. Без использования этого расширения (и в том случае, если переадресация прерываний запрещена) при возникновении прерывания процессор покидает режим V86 и выполняет обычный обработчик защищённого режима.

Инициализация IDT[править | править вики-текст]

Первый этап инициализации выполняется BIOS, перед загрузкой ОС. Второй непосредственно самой операционной системой. Операционной системе доступно изменение некоторых адресов прерываний.

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]