Obsah - Chráněnej režim

Deskriptory

Záznam v GDT | LDT

Bajt 0 1 2 3 4 5 6 7
Prvek[bity] limit[0-7] limit[8-15] base[0-7] base[8-15] base[16-23] rights extend base[24-31]

Extend

extend význam
extend & 0Fh limit[16-19]
extend & 40h S - size (u datovejch a instrukčních segmentú: 0: bits 16, else: bits 32)
extend & 80h G - granularity (jednotka limitu: 0: 1 B, else: 4096 B)

Typy deskriptorú

rights typ segmentu maska význam
(rights&18h) == 10h datovej segment (DS,SS) 1 A - accessed (procesor nastavuje na 1 při každym přístupu, OS nuluje)
2 W - writable (povolen zápis)
4 ED - expansion direction
60h DPL - descriptor privilege level (/20h: požadovaná úroveň oprávnění)
80h P - present (přítomen ve fyzický paměti, jinak INT 0Bh)
(rights&18h) == 18h instrukční segment (CS) 1 A - accessed
2 R - readable (povoleno čtení)
4 C - conforming (0: pouze ze stejný úrovně oprávnění, else: přebírá úroveň oprávnění volajícího)
60h DPL
80h P - present
(rights&15h) == 1 TSS 2 active (právě aktivní proces)
8 386 (0: bits 16, else: bits 32)
60h DPL
80h P - present
(rights&1Fh) == 2 LDT 60h DPL
80h P - present

Call Gate - volací brána (v GDT | LDT)

Slouží k tomu, aby program mohl volat funkce na jiný úrovni oprávnění (PL).

Bajt 0 1 2 3 4 5 6 7
Prvek[bity] ofs[0-7] ofs[8-15] sel[0-7] sel[8-15] stack_depth rights ofs[16-23] ofs[24-31]

stack_depth

Každá úroveň oprávnění má vlastní zásobník.
Aby bylo možný předat parametry funkci na jiný úrovni oprávnění, kopírujou se do novýho zásobníku.
stack_depth (hloubka zásobníku) je velikost těhle parametrú.

rights

rights typ segmentu maska význam
(rights&17h) == 4 Call Gate 8 386 (0: bits 16, else: bits 32)
60h DPL
80h P - present





Záznam v IDT

Bajt 0 1 2 3 4 5 6 7
Prvek[bity] ofs[0-7] ofs[8-15] sel[0-7] sel[8-15] 0 rights ofs[16-23] ofs[24-31]

rights

rights typ segmentu maska význam
(rights&17h) == 5 Task Gate 60h DPL
80h P - present
(rights&17h) == 6 Int Gate (nuluje IF) 8 386 (0: bits 16, else: bits 32)
60h DPL
80h P - present
(rights&17h) == 7 Trap Gate 8 386 (0: bits 16, else: bits 32)
60h DPL
80h P - present