GDT

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 14. dubna 2017; kontroly vyžadují 2 úpravy .

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

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.

Viz také

Odkazy