Účel, typický formát a druhy deskriptorů a bran
Mikroprocesory Intel počínaje řadou i80286 zavádějí tzv. chráněný režim práce procesoru. To vše proto, aby bylo možno adresovat více než 1MB operační paměti. Zároveň je přizpůsobený pro podporu OS umožňujících multitasking. Umožňuje mít v paměti v jeden okamžik více procesů a přepínat mezi nimi tak, že v daném okamžiku se provádí pouze jeden. Adresový prostor může být rozdělen na lokální (např. proměnné a data procesu, ostatní procesy nemají do této oblasti přístup) a globální (např. kód programu, který je spuštěn více uživateli, tj. například překladač, jehož proměnné má každý proces ve svém lokálním prostoru)
Globální adresový prostor určuje tabulka deskriptorů adresového prostoru GDT, lokální pak tabulky LDT. K přístupu k těmto tabulkám použijeme jednu část z logické adresy a to Selektor, který podle svého bitu TI určí, zda bude následovat přístup k LDT nebo GDT.
Selektor, 16b:
15 3 2 0
Index | TI | RPL |
Index ukazuje do příslušné tabulky na deskriptor segmentu, je 13bitový, tzn. může pojmout až 8192 segmentů
TI – table indicator (GDT=0 nebo LDT=1)
RPL – request privilege level, žadatelova úroveň oprávnění
Tabulka deskriptoru segmentů (LDT nebo GDT), 64b
0 | 0 | P.p | Báze segmentu | Limit |
P.p. – přístupová práva, určen typ segmentu a jeho přístupová práva a nastavení, 8b
Báze – absolutní adresa začátku segmentu, 24b
Limit – velikost segmentu, 16b
u 386 a vyšší:
Báze 24.-31 | ?viz níže? | P.p. | Báze segmentu 0.-23.b | Limit 0. –15.b |
7 0
G | s | 0 | Avl | Limit 16.-19.b |
Avl – Available, pro potřeby OS, např. jako 1b střadač
G – Granularita, zrnitost, jestli má za „zrnko“ pokládat pro 1B max.limit 1MB nebo po 4kB blocích, pak 4GB
s – Pro datový nebo zásobník velikost položky/max. velikost zásob. – B=0 – 16b/4kB(286), B=1- 32b/4GB(386)
Pro instrukční, implicitní velikost operandů a adres – D=0 – 16b, D=1 – 32b
Slabika přístupových práv (P.p.)
7 0
P | DPL | Typ seg. | Nastavení seg. |
P – určuje, zda je segment přítomen v paměti nebo na disku
DPL – úroveň oprávnění, 00-nejvyšší-systém, 11-uživatelský program
Typ seg.– 00-systémový segment–>000-nevyužit, 001-TSS neakt.procesu, 010-LDT, 011-TSS akt.procesu
00-bránu–>100-Call Gate, 101-Task Gate, 110-Interrupt Gate, 111-Trap Gate
01-nevyužívá se
10-datový segment–> ED-směr expanze (data nahoru, zásobník dolů), W-povolení zápisu
11-instrukční segment–>C-rozhoduje o získávání práv k neprověřeným programům, R-povolení čtení
A-accessed, pro datový a instrukční-aktivuje se při přístupu k segmentu a též slouží k rozhodování, zda se může segment odložit na disk
Brány, 64b:
63 0
0 | 0 | P.p. | ?1? | Selektor | ?2? |
?1?-u Call Gate určuje hloubku(počet slov uložených v zásobníku), jinak je nepoužit
?2?-u Call, Interrupt(maskované přerušení) a Trap(nemaskovatelné) Gate určuje Offset, u Task Gate je nepoužit