Deskryptor segmentu: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
m drobne merytoryczne
m drobne merytoryczne
Linia 2:
 
==W [[procesor]]ach o architekturze [[x86]]==
Struktura deskryptora jest 64-bitowa i określa segment w pamięci, dostępnych jest kilka rodzajów deskryptorów. Podstawowym typem deskryptora w architekturze [[x86]] jest deskryptor segmentu (ang. ''Segment Descriptor'') umieszczony jest on w lokalnej lub globalnej [[tablica deskryptorów|tablicy deskryptorów]] (ang. ''Global Descriptor Table - GDT, Local Descriptor Table - LDT''). Przez GDT lub LDT prowadzą wszystkie odwołania do pamięci. Deskryptor segmentu określa jednoznacznie segment, jego położenie w pamięci, rozmiar, typ, prawa dostępu do segmentu oraz inne dane potrzebne przy dostępie do segmentu w [[tryb chroniony|trybie chronionym]] pracy [[procesor]]a [[x86]]. Z każdym deskryptorem segmentu jest związany jego [[selektor]] (a właściwie możliwych jest kilka selektorów różniących się prawami uprzywilejowania selektora, a mające taki sam indeks deskryptora oraz wskaźnik na rodzaj tablicy GDT lub LDT).
 
Deskryptory służą także do definiowania bramek [[przerwanie|przerwań]] i procedur (''interrupt gate'' i ''callgate'') - wówczas deskryptor podaje adres takiej procedury i reguły dostępu. Bramki umożliwiają wywoływania kodu o wyższym uprawnieniach (np. procedur systemu operacyjnego lub sterownika) z poziomu programu o niższych uprawnieniach (np. programu użytkowego).
 
Poniższy rysunek przedstawia budowę deskryptora segmentu procesorów [[x86]]:
Linia 16 ⟶ 18:
*'''DPL''' - poziom uprzywilejowania segmentu (Descriptor Privilege Level)
*'''S''' - typ deskryptora (0 - systemowy 1 - kodu lub danych)
*'''Typ''' - typ segmentu: dane, stos, kod programu, bramki (przerwań i procedur, ''interrupt gate'', ''call gate'')
*'''Baza, Adres Bazowy''' - adres bazowy (początkowy) segmentu