Rambler's
Top100

Обработка прерываний в защищенном режиме

Автор: lonesome TSH/Digital Daemons
Дата: .01.2003
Раздел: Разработка ОС

Обработка прерываний в защищенном режиме также отличается от обработки в реальном. Основной элемент системы обработки прерываний в защищенном режиме - таблица IDT (Interrupt Descriptors Table - таблица дескрипторов прерываний).

Как и в случае с дескрипторами сегментов, каждый дескриптор из таблицы IDT - восьмибайтная структура. Три типа дескрипторов могут находится в таблице IDT:
Шлюз прерывания
Шлюз ловушки
Шлюз задачи

Различия между шлюзами прерывания и ловушки: при выполнении обработчика прерывания все прерывания автоматически запрещаются до завершения обработчика (командой IRETD), а также сбрасывается флаг трассировки.

Формат дескриптора прерывания или ловушки:

байты 0-1: биты 15-0 смещения
байты 2-3: селектор сегмента
байт 4: нулевой
байт 5:

байты 6-7: биты 31-16 смещения
Возможные типы шлюза:
0110 - 16 битный шлюз прерывания
0111 - 16 битный шлюз ловушки
1110 - 32 битный шлюз прерывания
1111 - 32 битный шлюз ловушки

Поскольку возможных прерываний - 256, то в таблице IDT должно быть 256 дескрипторов. Порядковый номер дескриптора определяет при вызове какого прерывания он будет использоваться. При вызове обработчика прерываний процессор помещает в стек регистр флагов и адрес возврата. Некоторые прерывания также дополнительно помещают туда код ошибки.

Rambler's Top100