Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты Дорогов.docx
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
1.35 Mб
Скачать

8 Билет Прерывание в защищённом режиме

Реальный режим

1024

таблица

векторов

4 байта

IP

2 байта Программный доступ

CS

2 байта

n

Int n – номер ячейки

0

Прерывания в стеке. SS:SP

FLAGS

IP

CS

Команда IRET предназначена для возврата процедуры обработки прерываний.

Когда выполняется команда IRET, процессор проверяет привилегии селектора сегмента программы, выбираемого из стека (то есть селектора сегмента, которому будет передано управление при выполнении команды IRET). Процессор может выполнить возврат только в менее привилегированный сегмент или в сегмент, обладающий такими же привилегиями, что и тот, из которого выполняется возврат.

Аппаратный доступ: через контроллер прерываний

Существует всего шестнадцать прерываний, обозначаемых IRQ0-IRQ15.

В конце IRET для завершения прерываний.

Команда OUT – сброс значения контроллера (IRQ)

Бит IF определяет допустимость обработки прерывания.

STI, CLI – устанавливает и сбрасывает флаг прерываний

В защищённом режиме схема адресации памяти другая

Защищённый режим

IDT

IDTR

- позиция

24

8 байт

Резерв

Доступ

CS

IP

16

Физический адрес

+

24

0

GDT

Таблица дескрипторов вместо таблицы векторов

Дескриптор специального типа (тип 6 и 7)

В защищённом режиме все прерывания разделяются на два типа - обычные прерывания (программные и аппаратные) и особые случаи, или исключения (exception) (все прерывания механизмов защиты)

Таблица прерываний защищённого режима называется дескрипторной таблицей прерываний IDT (Interrupt Descriptor Table). Также как и таблицы GDT и LDT, таблица IDT содержит 8-байтовые дескрипторы. Причём это системные дескрипторы – вентили прерываний, исключений и задач. Поле TYPE вентиля прерывания содержит значение 6, а вентиля исключения - значение 7.

P

D P L

0

0

1

1

0

Поле доступа вентиля прерываний

7

6 5

4

3

2

1

0


P

D P L

0

0

1

1

1

Поле доступа вентиля исключения


После срабатывания IRET мы возвращаемся в тот сегмент, из которого мы перешли в программу. Нельзя забывать про уровни привилегий. В случае возврата в более низкий уровень будет ошибка.

В защищённом режиме в случае ошибки, останавливается выполнение только отдельного процесса. В реальном режиме защиты не существует и зависает всё.

Защищённый режим в отношении обработок прерываний отличается от реального

1) Повторная входимость

2) Локализация ошибок

n + 2

n + 1

стек

событие

n

Повторная входимость

Локализация ошибок

Error code

I

TI

Ext

В стеке SS:SP

FLAGS

I=1 IDT 0 – GDT

CS

I=0 TI 1 – LDT

PC

Ext – внешняя ошибка по отношению к выполняемой программе