GDT ( anglicky Global Descriptor Table , globální tabulka deskriptorů) je datová struktura služeb v architektuře x86 , která definuje globální (společné pro všechny úlohy) segmenty . Umístění a velikost jeho fyzické paměti jsou určeny systémovým registrem GDTR .
Deskriptory LDT a úkolového segmentu ( TSS ) lze nalézt pouze zde.
Charakteristickým rysem GDT je, že neumožňuje přístup k prvnímu (tj. nulovému) deskriptoru . Přístup k němu vyvolá výjimku #GP , která zabrání přístupu do paměti pomocí nenačteného segmentového registru.
GDTR ( anglicky Global Descriptor Table R egister - Global Descriptor Table Register ) je speciální 48bitový registr, který popisuje umístění a velikost tabulky obsahující deskriptory . Objevil se spolu s ochranným mechanismem v modelech procesorů 80286 jako segmentovaný ochranný mechanismus .
Registr obsahuje dvě pole: první pole - prvních 32 bitů , popisuje lineární adresu , na které by se měla tabulka deskriptorů nacházet, a posledních 16 bitů - limit, který určuje velikost tabulky v bajtech. Každý deskriptor zabírá 8 bajtů v paměti . Proto by se limita měla vždy počítat takto: limit = 8*n - 1, kde n je počet deskriptorů .
Při inicializaci operačního systému se obvykle vytvoří tabulka globálních deskriptorů pro plný počet deskriptorů (limit = 65535) nebo 8192 deskriptorů . Poté se virtuální adresa začátku tabulky načte do registru GDTR pomocí speciální instrukce assembleru LGDT ( Load GDT ) :
mov ax , GDT_Limit push ax mov eax , GDT_Base push eax mov bp , sp lgdt qword [ ss : bp ] ; zásobník roste ''dolů''!Po aktivaci ochranného mechanismu začne pracovat selektorový adresovací systém namísto segmentového a použije se GDT.