Дескрипторные таблицы
- 1 year ago
- 0
- 0
Дескриптор шлюза — служебная структура данных , служащая для различных переходов. Используется только в защищённом режиме . В реальном режиме некоторым аналогом может служить дальний адрес. Длина дескриптора стандартна и равна восьми байтам .
Селектор и смещение составляют обычный дальний адрес точки входа в процедуру.
При выполнении дальних команд , с указанием селектора шлюза, значение смещения, указываемого в команде игнорируется.
Алгоритм перехода с использованием шлюза:
Теперь подробнее:
Нельзя использовать в IDT .
Характерной особенностью шлюза вызова является наличие поля WC, благодаря которому возможна передача до 2 5 =32 слов/двойных слов вызываемой процедуре через стек . Подробнее данный тип шлюза описан в статье Сегментная защита памяти
Может использоваться в любой из трёх дескрипторных таблиц.
Единственная особенность этого шлюза состоит в том, что в качестве сегмента указан сегмент TSS . Поля смещения не используются и могут иметь любое значение.
Этот шлюз используется только в IDT .
Его особенностью является сброс флага прерываний IF при входе в процедуру обработки. Так как прежнее значение регистра флагов сохраняется в стеке , то при выходе из процедуры обработки флаг IF принимает исходное положение. Это позволяет обрабатывать некоторые прерывания в режиме CLI .
Этот шлюз используется только в IDT .
Самый простой шлюз. При поступлении прерывания просто переходит на процедуру обработки (при необходимости производится переключение стека ).