Typy segmentů 286
Typ popisovaného segmentu je definován obsahem slabiky
přístupová práva. Podle typu segmentu rozlišujeme v 80286 4 základní druhy popisovačů:
- popisovač segmentu obsahujícího data (datový segment)
- popisovač segmentu obsahujícího instrukce (instrukční segment)
- popisovač segmentu obsahujícího informace pro systém (systémový segment)
- popisovač brány
3 typy segmentů:
1) Datový segment (může sloužit i jako zásobník)
2) Instrukční segment
3) Systémový segment
(4) Popisovač brány (zvláštní typ systémového segmentu)
Popisovač datového segmentu
P
- Segment Present
- jestliže = 1 tak je platný (obsah segmentu je uložen v reálné paměti)
- když je tam 0, tak je neplatný
DPL
- Descriptor Privilege Level
- určuje úroveň oprávnění, jež je přidělena segmentu
W
- Writable
- zda je povolen zápis do segmentu
- w=1 – povoleno čtení i zápis
- w=0 – povoleno jen čtení
- zásobník musí mít vždy W=1
A
- Accesssed
- jestliže k segmentu přistupujeme, bude tento bit nastaven do 1
ED
- Expansion Direction
- určuje, zda-li se bude jednat o data nebo zásobník
- 0 = data, 1 = zásobník
- indikuje, kterým směrem se bude do segmentu zapisovat
Platí:
U dat: Čím větší limit, tím větší je prostor pro data.
U zásobníků je to naopak: Čím menší limit, tím větší je zásobník.
Když je u zásobníku limit = 0, tak je zásobník celých 64 kilobajtů.
Je-li nastaveno ED = 0 (data), bude se obsah segmentu rozšiřovat směrem k vyšším adresám. Data se ukládají (v rámci 64 KB segmentu) od adresy 0000 směrem k adrese 0FFFFh. Při požadavku na zvětšení obsahu se musí zvětšit hodnota limitu segmentu.
Když se ED = 1 (zásobník), bude se obsah segmentu rozšiřovat směrem k nižším adresám. položky zásobníku se ukládají od adresy 0FFFFh směrem k adrese 0000 (uvnitř 64 KB segmentu). Při požadavku na zvětšení obsahu se musí zmenšit hodnota limitu segmentu (ten se totiž i v případě zásobníku počítá od adresy 0).
(????? musim ještě dořešit to, co tam znamená to SS:SP a SS a DS a DS:EA ?????)
Bit s číslem 4 a 3
- To nám říká, že je to datový typ segmentu
Popisovač instrukčního segmentu
C
- Conforming
- jestliže c=0, tak podprogramy volané v tomto segmentu budou mít úroveň oprávnění dle úrovně oprávnění segmentu
- jestliže c=1, tak podprogramy volané v tomto segmentu budou mít úroveň oprávnění dle úrovně oprávnění, ze které je podprogram volán
R
- Readable
- je-li R = 0, je zakázáno čtení obsahu. Je povoleno pouze obsah segmentu spustit
- je li R = 1, je povoleno čtení i spuštění
Popisovač systémového segmentu
Typ
– 0 až 3, přičemž hodnota 0 je zakázaná
| 0 |
nepovolená hodnota |
| 1 |
TSS - jedná se o segment stavu procesu (právě NEaktivního) |
| 2 |
lokální deskriptorová tabulka |
| 3 |
TSS právě aktivní |
Popisovač brány
- je zvláštní typ systémového popisovače
- typ je ale větší než 3:
| 4 |
brána pro předání řízení |
| 5 |
brána pro TSS |
| 6 |
maskující přerušení |
| 7 |
nemaskující přerušení |