Interested Article - GDT

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
Источник —

Same as GDT