Контроллер прерываний
- 1 year ago
- 0
- 0
Таблица векторов прерываний ( англ. Interrupt Descriptor Table, IDT ) используется в архитектуре x86 и ряде других архитектур и служит для определения корректного ответа на прерывания и исключения .
В микропроцессорах Intel 8086 / 80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение. Начиная с процессора 80286 , адрес в физической памяти и размер таблицы прерываний определяется 48- битным регистром IDTR.
В IDT используются следующие типы прерываний: аппаратные прерывания, программные прерывания и прерывания, зарезервированные процессором, называемые исключениями (первые 32) на случай возникновения некоторых событий ( деление на ноль , ошибка трассировки, переполнение).
В реальном режиме элементом IDT является 32- битный FAR-адрес обработчика прерывания .
В защищённом режиме элементом IDT является шлюз прерывания длиной 8 байт , содержащий сегментный (логический) адрес обработчика прерывания, права доступа и др.
В длинном режиме размер дескриптора прерывания увеличен до 16 байт.
В режиме V86 при использовании расширения VME таблица векторов располагается по виртуальному адресу 0000:0000. Без использования этого расширения (и в том случае, если переадресация прерываний запрещена) при возникновении прерывания процессор покидает режим V86 и выполняет обычный обработчик защищённого режима.
Первый этап инициализации выполняется BIOS , перед загрузкой ОС . Второй непосредственно самой операционной системой. Операционной системе доступно изменение некоторых адресов прерываний.