Tabelele de descriptori sunt structuri de date de serviciu care conțin descriptori de segment .
Există trei tipuri de tabele de descriptori în arhitectura x86 :
Deoarece un descriptor ocupă 8 octeți, iar limita din registrul GDTR este de doi octeți și stochează dimensiunea tabelului minus unu (valoarea maximă a limitei este 65535) și 8192 x 8 = 65536.
Descriptori LDT și segment de activitate ( TSS ) pot fi găsiți doar aici.
O caracteristică a GDT -ului este că nu permite accesul la primul (cu un offset zero față de începutul tabelului) descriptor . Accesarea acestuia generează o excepție #GP , care împiedică accesul la memorie folosind un registru de segment neîncărcat.
Spre deosebire de GDT , pot exista multe LDT-uri (în funcție de numărul de sarcini (threads), dar nu neapărat). Fiecare sarcină poate avea propria sa. Locația tabelului de sarcini curent este indicată de registrul LDTR .
Mărimea și locația LDT -ului în memoria liniară este determinată de descriptorul LDT al GDT (dar acest lucru nu înseamnă că dimensiunea LDT -ului poate fi mai mare de 65536 de octeți ).
Se poate folosi primul descriptor LDT (#0).
Tabelul de întreruperi este global. Locația în memoria fizică este determinată de registrul IDTR .
Când apare o întrerupere (externă, hardware sau cauzată de instrucțiunea Int ):