Дескриптор шлюза

Дескриптор шлюза

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

Структура дескриптора шлюза вызова (курсивом обозначены поля, которых не было в 80286
  • Смещение (англ. Offset, жёлтые поля) — смещение процедуры в сегменте кода;
  • Селектор (англ. Selector, оранжевое поле) — селектор сегмента процедуры, на который происходит переход. Может быть сегментом кода или TSS;
  • Количество параметров (англ. Words count, голубое поле, биты 32-36) — количество слов (16-разрядный стек) или двойных слов (32-разрядный стек), копируемых из стека вызывающей программы в стек вызываемой процедуры. Актуально только при смене уровня привилегий; используется только в шлюзах вызова (Call Gate)
  • Тип/права доступа (голубые поля, биты 40-47) — права доступа к шлюзу и его тип (см. Дескриптор сегмента — типы системных сегментов).

Селектор и смещение составляют обычный дальний адрес точки входа в процедуру.

При выполнении дальних команд CALL, JMP с указанием селектора шлюза, значение смещения, указываемого в команде игнорируется.

Алгоритм перехода с использованием шлюза:

  • Если уровень привилегий вызываемого сегмента кода численно меньше CPL, то происходит смена стека: из соответствующих полей TSS загружаются новые значения SS, (E)SP;
  • Если была смена стека, то в новый стек сохраняется предыдущие значения SS, (E)SP (до вызова);
  • Если была смена стека, а шлюз является шлюзом вызова, то в новый стек копируются WC слов/двойных слов из стека вызывающей программы;
  • Если это шлюз прерывания или ловушки, то сохраняется значение (E)Flags;
  • Сохраняется текущее значение CS, (E)IP;
  • Из дескриптора шлюза в регистры CS:(E)IP загружается новый дальний адрес, указанный в соответствующих полях дескриптора;

Теперь подробнее:

Содержание

Шлюз вызова (англ. Call Gate)

см также en:Call gate

Нельзя использовать в IDT.

Характерной особенностью шлюза вызова является наличие поля WC, благодаря которому возможна передача до 25=32 слов/двойных слов вызываемой процедуре через стек. Подробнее данный тип шлюза описан в статье Сегментная защита памяти

Шлюз задачи (англ. Task Gate)

Может использоваться в любой из трёх дескрипторных таблиц.

Единственная особенность этого шлюза состоит в том, что в качестве сегмента указан сегмент TSS. Поля смещения не используются и могут иметь любое значение.

Шлюз прерывания (англ. Interrupt Gate)

Этот шлюз используется только в IDT.

Его особенностью является сброс флага прерываний IF при входе в процедуру обработки. Так как прежнее значение регистра флагов сохраняется в стеке, то при выходе из процедуры обработки флаг IF принимает исходное положение. Это позволяет обрабатывать некоторые прерывания в режиме CLI.

Шлюз ловушки (англ. Trap Gate)

Этот шлюз используется только в IDT.

Самый простой шлюз. При поступлении прерывания просто переходит на процедуру обработки (при необходимости производится переключение стека).

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Дескриптор шлюза" в других словарях:

  • Дескриптор — (англ. Descriptor): Дескриптор HTML  элемент языка разметки гипертекста HTML. В разговорной речи дескрипторы называют тегами. Дескриптор развертывания XML файлы, которые описывают, как развернуть модули. Файловый дескриптор  число… …   Википедия

  • Дескриптор сегмента — (в архитектуре x86)  служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна 8 байт . Структура сегментного дескриптора База (жёлтые поля, 32 бита)  начало сегмента в линейной памяти Лимит (красные поля, 20… …   Википедия

  • Сегментная защита памяти — В этой статье отсутствует вступление. Пожалуйста, допишите вводную секцию, кратко раскрывающую тему статьи. Сегментная защита памяти  один из вариантов реализации защиты памяти в процессорах архитектуры x86. Может применяться в защищенном… …   Википедия

  • Дескрипторные таблицы — Дескрипторные таблицы  служебные структуры данных, содержащие дескрипторы сегментов. В архитектуре x86 есть три вида дескрипторных таблиц: Глобальная дескрипторная таблица (англ. Global Descriptor Table, GDT); Локальная дескрипторная… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»