Najlepsze pytania
Chronologia
Czat
Perspektywa

Tablica deskryptorów

Z Wikipedii, wolnej encyklopedii

Remove ads

Tablica deskryptorów – w trybie chronionym procesora x86 struktura ulokowana w dedykowanym segmencie, zawierająca deskryptory wszystkich segmentów znajdujących się w pamięci operacyjnej. W środowiskach wielozadaniowych wyróżniamy jedną wspólną tablicę globalną (GDT - ang. Global Descriptor Table), tablicę przerwań (IDT - ang. Interrupt Descriptor Table), a także tablice lokalne (LDT - ang. Local Descriptor Table) przypisane do każdego procesu w systemie[1] (nowoczesne systemy operacyjne nie korzystają już z segmentacji). Typowa tablica deskryptorów może pomieścić 213 8-bajtowych wpisów, gdyż jej rozmiar to 64 kB.

Dysponując rozmiarem tablicy deskryptorów można określić maksymalny rozmiar pamięci wirtualnej, którą może zaadresować pojedynczy proces - w przypadku układów 80386, 80486 i Pentium jest to 21 * 213 * 232 = 246 B = 64 TB (kolejno: jeden bit determinujący tablicę GDT/LDT, 13 bitów określających numer segmentu i 32 bity opisujących wielkość segmentu przy uwzględnieniu granulacji równej 4 kB). Dla procesora 80286 będzie to odpowiednio 21 * 213 * 216 = 230 B = 1 GB (w tym przypadku 16 bitów określających wielkość segmentu).

Z tablicami LDT i GDT powiązane są rejestry LDTR i GDTR:

  • 48-bitowy rejestr GDTR zawiera adres (32 bity) i rozmiar tablicy GDT (16 bitów). Rejestr ten musi być zainicjalizowany podczas przełączania procesora w tryb chroniony.
  • 16-bitowy rejestr LDTR zawiera selektor segmentu z tablicą LDT.

Tablica IDT ma strukturę podobną do GDT lecz zawiera deskryptory wszystkich segmentów z procedurami obsługi przerwań[2].

Remove ads

Przypisy

Bibliografia

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads