Tabel descriptor global

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Tabel descriptor global

Tabelul descriptor global sau Tabel descriptor global (GDT) este o structură de date utilizată de procesoarele din familia x86 Intel , începând cu ' 80286 , pentru a defini diferite zone ale memoriei în executarea unui program, cum ar fi baza adresei, dimensiunea, și privilegii de acces precum executabilitatea și scrierea. Aceste zone de memorie sunt numite segmente în terminologia Intel.

GDT conține mai mult decât descriptori de segmente. Fiecare 8 octeți din GDT reprezintă un descriptor, dar aceștia pot fi descriptori Task State Segment (sau TSS), descriptori LDT sau descriptori de poartă de apel . Acestea din urmă, Call Gates, sunt deosebit de importante pentru transferul controlului între diferitele niveluri de privilegii ale x86, chiar dacă această metodă nu este utilizată de sistemele de operare moderne.

Cum funcționează sistemul de operare

Pentru a încărca GDT, sistemul de operare trebuie să execute instrucțiunea LGDT addr , unde addr este adresa structurii care reprezintă registrul GDT.

Acest registru, format din 48 de biți, are această structură:

Dimensiune Nume Descriere
cuvânt Limită Dimensiunea totală a octeților GDT-1
dword Baza Adresa fizică a GDT

Tabelul descriptorilor globali

Dimensiunea maximă a GDT este de 8192 de elemente, deoarece într-o memorie segmentată există în mod obișnuit 2 14 (16384) segmente, din care jumătate (8192) sunt atribuite informațiilor de sistem, cealaltă informațiilor procesate de utilizator. Jumătate din descriptori sunt, prin urmare, stocate în GDT, cealaltă jumătate în LDT. Procesoarele Intel necesită ca primul element al GDT și, prin urmare, primii 8 octeți, să fie setat la 0. Fiecare element al GDT are această structură:

Dimensiune Nume Descriere
cuvânt LimitLow Primii 16 biți ai limitei
cuvânt BaseLow Primii 16 biți ai bazei
octet BaseMiddle Biții 17 - 24 ai bazei
octet Acces Vezi mai jos
octet Granularitate Vezi mai jos
octet BaseHigh Biții 25 - 32 ai bazei

Baza

Câmpul de bază (32 biți) este format din câmpurile BaseLow (16 biți), BaseMiddle (8 biți) și BaseHigh (8 biți). Acest câmp indică adresa fizică de la care începe segmentul. Mai multe segmente se pot „suprapune”

Limită

Câmpul limită (20 biți) este format din câmpul LimitLow (16 biți) și cei 4 biți inferiori ai câmpului Granularitate. Acest câmp indică lungimea segmentului, nu adresa finală!

Cei 20 de biți ai câmpului limită trebuie interpretați ca un număr de unități de 8 octeți sau ca un număr de pagină adresabilă în cadrul segmentului. Prin urmare, dacă utilizați pagini de 4 KB (12 biți) și câmpul limită are valoarea 0xFFFFF, dimensiunea segmentului este egală cu 4 GB (dimensiunea maximă a unui segment pe o mașină de 32 de biți).

Deci, un segment acoperă zonele de memorie dintre „Baza” și „Baza + Limită”

Acces

Câmpul de acces conține diverse informații. Fiecare bit specifică modul în care este utilizat acel segment:

Pic Nume Descriere
7 Prezent Indică dacă segmentul este prezent sau nu în memorie, este întotdeauna setat la 1
6 - 5 DPL Indică nivelul privilegiului în raport cu CPU - ul segmentului respectiv
4 Sistem Dacă este setat la 1, CPU utilizează acest segment pentru date și cod, dacă este setat la 0, este un TSS (Task State Segment) sau un Gate Gate
3 - 0 Tip Indică procesorului drepturile pe care le are asupra segmentului (numai citire / scriere de exemplu)

Granularitate

Câmpul de granularitate, precum și câmpul de acces, oferă diverse informații:

Pic Nume Descriere
7 Granularitate dacă este setat la 1, câmpul limită este înmulțit cu 4096. În acest fel putem obține cum

dimensiunea maximă a segmentului 4 GB, în caz contrar, la 0, dimensiunea maximă este de 1 MB.

6 Dimensiunea operației Indică dacă segmentul este utilizat în 16 sau 32 de biți
5 Rezervat Trebuie setat la 0
4 AVL Acest câmp a fost utilizat în procesoare înainte de seria Pentium . Acum este utilizabil în mod liber de către sistemul de operare
3 - 0 LimitHigh Cei mai mari 4 biți ai câmpului Limit

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT