GDT
GDT (англ. Global Descriptor Table, глобальная таблица дескрипторов) — служебная структура данных в архитектуре x86, определяющая глобальные (общие для всех задач) сегменты. Её расположение в физической памяти и размер определяются системным регистром GDTR.
Дескрипторы LDT и сегментов задач (TSS) могут находиться только здесь.
Особенностью GDT является то, что у неё запрещён доступ к первому (то есть нулевому) дескриптору. Обращение к нему вызывает исключение #GP, что предотвращает обращение к памяти с использованием незагруженного сегментного регистра.
GDTR
GDTR (англ. Global Descriptor Table Register — регистр глобальной дескрипторной таблицы) — специальный 48-битный регистр, который описывает местоположение и размер таблицы, содержащей дескрипторы. Он появился вместе с механизмом защиты в 80286 моделях процессоров как сегментный механизм защиты.
Регистр содержит два поля: первое поле — первые 32 бита, описывают линейный адрес, по которому должна быть расположена дескрипторная таблица, а последние 16 бит — лимит, определяющий размер таблицы в байтах. Каждый дескриптор занимает в памяти 8 байт. Поэтому лимит всегда должен вычисляться так: limit = 8*n — 1, где n — количество дескрипторов.
При инициализации операционной системы глобальная дескрипторная таблица обычно создаётся на полное количество дескрипторов (limit = 65535), или 8192 дескрипторов. Затем виртуальный адрес начала таблицы загружается в регистр GDTR специальной ассемблерной инструкцией LGDT (англ. Load GDT):
mov ax, GDT_Limit
push ax
mov eax, GDT_Base
push eax
mov bp, sp
lgdt qword [ss:bp] ; стек растёт ''вниз''!
После включения механизма защиты начинает действовать селекторная система адресации, вместо сегментной, и использоваться GDT.
См. также
Ссылки
- Intel® 64 and IA-32 Architectures Software Developer's Manuals (англ.). — Справочное руководство по процессору Intel. Дата обращения: 31 октября 2008. [уточнить]
- Ассемблер для 32-разрядных процессоров: от i386 до Pentium 4
- GDT Table at OSDev.org
- GDT Tutorial at OSDev.org
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.