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).