- Статьи для начинающих -

   
- Назад на оглавление -
Обработка прерываний в защищенном режиме

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

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

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

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

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

    бит 7 - присутствие сегмента
    биты 6-5 - уровень привилегий сегмента
    бит 4 - тип дескриптора (0 - системный)
    бит 3-0: тип шлюза
байты 6-7: биты 31-16 смещения
Возможные типы шлюза:
0110 - 16 битный шлюз прерывания
0111 - 16 битный шлюз ловушки
1110 - 32 битный шлюз прерывания
1111 - 32 битный шлюз ловушки

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

Хостинг от uCoz