Таблиця векторів переривань

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

У мікропроцесорах Intel 8086/80186 таблиця векторів переривань розташована в першому кілобайті пам'яті починаючи з адреси 0000:0000 і містить 256 векторів переривань у форматі «сегмент: зміщення». Починаючи з процесора 80286, адреса у фізичній пам'яті та розмір таблиці переривань визначається 48-бітовим регістром IDTR.

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

У реальному режимі елементом IDT є 32-бітова FAR-адреса опрацьовувача переривання.

У захищеному режимі елементом IDT є шлюз переривання довжиною 8 байтів, що містить сегментну (логічну) адресу опрацьовувача переривання, права доступу тощо.

У довгому режимі розмір дескриптора переривання збільшено до 16 байтів.

У режимі V86 за використання розширення VME таблиця векторів розташовується за віртуальною адресою 0000:0000. Без використання цього розширення (і у випадку, коли переадресацію переривань заборонено) при виникненні переривання процесор залишає режим V86 і виконує звичайний опрацьовувач захищеного режиму.

Ініціалізація IDT[ред. | ред. код]

Перший етап ініціалізації виконує BIOS, перед завантаженням ОС. Другий — безпосередньо сама операційна система. Операційній системі доступне змінення деяких адрес переривань.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Exceptions - OSDev Wiki. wiki.osdev.org. Процитовано 17 квітня 2021.

Посилання[ред. | ред. код]