Interested Article - GDT
- 2021-11-23
- 1
GDT ( англ. Global Descriptor Table , глобальная таблица дескрипторов) — служебная структура данных в архитектуре x86 , определяющая глобальные (общие для всех задач) сегменты . Её расположение в физической памяти и размер определяются системным регистром GDTR .
Дескрипторы LDT и сегментов задач ( TSS ) могут находиться только здесь.
Особенностью GDT является то, что у неё запрещён доступ к первому (то есть нулевому) дескриптору . Обращение к нему вызывает исключение , что предотвращает обращение к памяти с использованием незагруженного сегментного регистра.
GDTR
GDTR ( англ. G lobal D escriptor T able R egister — регистр глобальной дескрипторной таблицы) — специальный 48- битный регистр, который описывает местоположение и размер таблицы, содержащей дескрипторы . Он появился вместе с механизмом защиты в 80286 моделях процессоров как сегментный механизм защиты .
Регистр содержит два поля: первое поле — первые 32 бита , описывают линейный адрес , по которому должна быть расположена дескрипторная таблица, а последние 16 бит — лимит, определяющий размер таблицы в байтах. Каждый дескриптор занимает в памяти 8 байт . Поэтому лимит всегда должен вычисляться так: limit = 8*n — 1, где n — количество дескрипторов .
При инициализации операционной системы глобальная дескрипторная таблица обычно создаётся на полное количество дескрипторов (limit = 65535), или 8192 дескрипторов . Затем виртуальный адрес начала таблицы загружается в регистр GDTR специальной ассемблерной инструкцией LGDT ( англ. L oad GDT ):
mov ax, GDT_Limit
push ax
mov eax, GDT_Base
push eax
mov bp, sp
lgdt qword [ss:bp] ; стек растёт ''вниз''!
После включения механизма защиты начинает действовать селекторная система адресации, вместо сегментной, и использоваться GDT.
См. также
Ссылки
- (англ.) . — Справочное руководство по процессору Intel. Дата обращения: 31 октября 2008. [ уточнить ]
- at OSDev.org
- at OSDev.org
|
В другом языковом разделе
есть более полная статья
(англ.)
.
|
- 2021-11-23
- 1