Podczas pracy procesora w trybie chronionym każdy z segmentów
programu, danych czy stosu jest opisany zbiorem parametrów określających
lokalizację danego segmentu w przestrzeni adresowej pamięci oraz zasady
dostępu do tego segmentu. Parametry segmentu są przedstawione w postaci 8-
bajtowej struktury danych, określanej mianem deskryptora. Podczas
wyznaczania adresu procesor wykorzystuje deskryptor aby określić czy jest
dopuszczalne odwołanie do tego segmentu, wyznaczyć adres liniowy,
oraz sprawdzić czy adres mieści się w zakresie tego
segmentu. Deskryptory segmentów przechowywane są w pamięci w postaci
tablic deskryptorów. Tablice te mogą mieć rozmiary od 8 bajtów do 64 kB.
Jeśli adres względny przekracza rozmiar tablicy, to generowany jest
wyjÄ…tek informujÄ…cy o naruszeniu systemu ochrony. W przeciwnym wypadku
adres względny deskryptora dodawany jest do adresu bazowego tablicy
zapisanego w rejestrze GDTR (tablica GDT) lub rejestrze LDTR (tablica LDT)
i w ten sposób otrzymywany jest adres pamięci pod którym zapisany jest
deskryptor segmentu.
Trzy typy tablic deskryptorów:
ÛÜ GDT (ang. Global Descriptor Table) - globalna tablica deskryptorów,
ÛÜ LDT (ang. Local Descriptor Table) - lokalna tablica deskryptorów,
ÛÜ IDT (ang. Interrupt Descriptor Table) - tablica deskryptorów przerwaÅ„.
Odwołanie do odpowiedniego deskryptora w tablicy deskryptorów jest
wykonywane za pomocą selektora, zapisanego w jednym z rejestrów
segmentowych: CS, DS, SS, ES, FS, GS. Selektor jest 16-bitowym rekordem,
zawierajÄ…cym trzy pola
Z każdym z rejestrów segmentowych związany jest 8-bajtowy ukryty rejestr
deskryptora, będący kopią odpowiedniego deskryptora z tablicy deskryptorów.
Adres logiczny w trybie chronionym jest reprezentowany przez selektor,
zapisany w jednym z rejestrów segmentowych, oraz OFFSET będący adresem
względnym w segmencie.
Na podstawie adresu logicznego, w oparciu o deskryptor segmentu pobrany
z tablicy deskryptorów, procesor wyznacza adres liniowy.