Selektor (informatyka)
Selektor – 16-bitowa struktura stanowiąca część adresu logicznego używana w mechanizmie segmentacji. Wskazuje ona tablicę deskryptorów i deskryptor w tej tablicy i jest wykorzystywana w trybie chronionym procesorów zgodnych z architekturą x86.
Selektor jest przechowywany w 16-bitowych rejestrach segmentowych i chociaż istnieje możliwość zmiany zawartości rejestrów segmentowych, to zwykle selektory są określane statycznie, na etapie kompilacji i linkowania programu. W przypadku procesorów 32-bitowych (IA-32) rejestry segmentowe nadal są 16-bitowe, lecz wielkości segmentów określane w deskryptorach są już 32-bitowe. Pozwoliło to większości 32-bitowych systemów operacyjnych na zadeklarowanie jednego segmentu o wielkości obejmującej całą dostępną pamięć operacyjną. Celem takiego postępowania jest obejście mechanizmu segmentowania, ponieważ nie ma możliwości jego wyłączenia, i korzystanie tylko z mechanizmu stronicowania pamięci, który to pojawił się właśnie w architekturze IA-32 wraz z możliwością wywłaszczania procesów.
Struktura selektora:
15 3 2 1 0 +---------------------------------------+---+------+ | indeks |TI | RPL | +---------------------------------------+---+------+
- indeks (13 bitów) – indeks w tablicy deskryptorów (0÷8191);
- TI (1 bit; ang. table indicator, wskaźnik tablicy) – określa czy deskryptor znajduje się w globalnej tablicy deskryptorów GDT (TI=0), czy lokalnej LDT (TI=1);
- RPL (2 bity; ang. Requested Privilege Level, wymagany poziom uprawnień) – stanowi mechanizm ochronny. Określa prawa dostępu do danego segmentu i może przyjmować wartości od 0 (wymagany jest najwyższy poziom uprawnień przy dostępie do tego segmentu) do 3 (dostęp w trybie użytkownika).