Дескриптор сегмента - Википедия - Segment descriptor
Адресация в памяти для Intel x86 компьютерные архитектуры, дескрипторы сегментов являются частью модуля сегментации, используются для перевода логический адрес на линейный адрес. Дескрипторы сегмента описывают сегмент памяти упоминается в логическом адресе.[1]Дескриптор сегмента (8 байтов в 80286 и новее) содержит следующие поля:[2]
- Базовый адрес сегмента
- Ограничение сегмента, определяющее размер сегмента
- Байт прав доступа, содержащий информацию о механизме защиты
- Биты управления
Структура
Дескриптор сегмента x86 и x86-64 имеет следующий вид:[3]
31 | — | 24 | 23 | 22 | 21 | 20 | 19 | — | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | — | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Базовый адрес [31:24] | грамм | D / B | L | AVL | Предел сегмента [19:16] | п | DPL | 1 | Тип | C / E | R / W | А | Базовый адрес [23:16] | |||||||
Базовый адрес [15: 0] | Предел сегмента [15: 0] |
Где обозначены поля:
- Базовый адрес
- 32-битный начальный адрес памяти сегмента
- Предел сегмента
- Длина сегмента 20 бит. (Точнее, адрес последних доступных данных, поэтому длина на единицу больше, чем хранимое здесь значение.) Как именно это следует интерпретировать, зависит от других битов дескриптора сегмента.
- G = Гранулярность
- Если этот параметр не установлен, ограничение выражается в байтах, максимум 2.20 байтов. Если установлено, ограничение задается в единицах страниц по 4096 байт, максимум 232 байтов.
- D = размер операнда по умолчанию
- Если он не установлен, это 16-битный сегмент кода; если установлено, это 32-битный сегмент.
- B = Большой
- Если установлено, максимальный размер смещения для сегмента данных увеличивается до 32-битного значения 0xffffffff. В противном случае это 16-битный максимум 0x0000ffff. По сути то же самое, что и "D".
- L = длинный
- Если установлено, это 64-битный сегмент (и D должен быть равен нулю), и код в этом сегменте использует 64-битную кодировку инструкций. «L» не может быть установлено одновременно с «D» или «B».
- AVL = доступно
- Для использования программного обеспечения, не используется оборудованием
- P = настоящее
- Если этот параметр не установлен, при любой ссылке на этот сегмент создается исключение "сегмент отсутствует".
- DPL = уровень привилегий дескриптора
- Уровень привилегий (кольцо), необходимый для доступа к этому дескриптору
- Тип
- Если установлено, это дескриптор сегмента кода. Если он не установлен, это дескриптор сегмента данных / стека, в котором «D» заменено на «B», «C» заменено на «E» и «R» заменено на «W». Фактически это частный случай 2-битного поля типа, где предыдущий бит 12, очищенный как «0», относится к большему количеству внутренних системных дескрипторов для LDT, LSS и вентилей.
- C = Соответствие
- Код в этом сегменте можно вызывать с менее привилегированных уровней.
- E = развернуть вниз
- Если этот параметр не установлен, сегмент расширяется от базового адреса до предела base +. Если установлено, оно расширяется от максимального смещения до предела, что обычно используется для стеков.
- R = читаемый
- Если он очищен, сегмент может быть выполнен, но не прочитан.
- W = возможность записи
- Если он не установлен, сегмент данных может быть прочитан, но не записан.
- A = Доступно
- Этот бит устанавливается в 1 аппаратно при доступе к сегменту и сбрасывается программно.
Смотрите также
Рекомендации
- ^ Бовет, Д.П., и Чезати, М. (2000). Понимание ядра Linux (первое издание). O'Reilly & Associates, Inc.
- ^ Табак, Даниэль (1995). Продвинутые микропроцессоры. Издательство Mcgraw Hill. п.149. ISBN 9780070628434.
- ^ Руководство программиста по архитектуре AMD64 Том 2: Системное программирование (PDF) (Технический отчет). 2013. с. 80. Архивировано с оригинал (PDF) 18 февраля 2018 г.
- Табак, Даниил. Продвинутые микропроцессоры. Макгроу Хилл и Ко.
- Холл, Дуглас. Микропроцессоры и интерфейсы. McGraw Hill Publications.
дальнейшее чтение
- Роберт Р. Коллинз (август 1998 г.). «Кэш дескриптора сегмента». Журнал доктора Добба.
внешняя ссылка
Этот компьютерное железо статья - это заглушка. Вы можете помочь Википедии расширяя это. |