Автор: lonesome TSH/Digital Daemons
Дата: .01.2003
Раздел: Разработка ОС
Обработка прерываний в защищенном режиме также отличается от обработки в реальном. Основной элемент системы обработки прерываний в защищенном режиме - таблица IDT (Interrupt Descriptors Table - таблица дескрипторов прерываний).
Как и в случае с дескрипторами сегментов, каждый дескриптор из таблицы IDT - восьмибайтная структура. Три типа дескрипторов могут находится в таблице IDT:
Шлюз прерывания
Шлюз ловушки
Шлюз задачи
Различия между шлюзами прерывания и ловушки: при выполнении обработчика прерывания все прерывания автоматически запрещаются до завершения обработчика (командой IRETD), а также сбрасывается флаг трассировки.
Формат дескриптора прерывания или ловушки:
байты 0-1: биты 15-0 смещения
байты 2-3: селектор сегмента
байт 4: нулевой
байт 5:
Поскольку возможных прерываний - 256, то в таблице IDT должно быть 256 дескрипторов. Порядковый номер дескриптора определяет при вызове какого прерывания он будет использоваться. При вызове обработчика прерываний процессор помещает в стек регистр флагов и адрес возврата. Некоторые прерывания также дополнительно помещают туда код ошибки.