Next: Selektor
Up: Segmentacja
Previous: Segmentacja
Podstawową jednostką zmiennych systemowych jest deskryptor.
Deskryptor jest ośmiobajtowym rekordem umieszczonym w tablicy GDT lub LDT.
Istnieje wiele typów deskryptorów; nas będą interesować wyłącznie dekryptory segmentów.
Deskryptory segmentów zawierają:
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
LIMIT (0-15) |
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
BASE (0-15) |
47 |
46 |
45 |
44 |
43 |
|
|
40 |
39 |
|
|
|
|
|
|
32 |
P |
DPL |
S |
TYPE |
BASE (16-23) |
63 |
|
|
|
|
|
|
56 |
55 |
54 |
53 |
52 |
51 |
|
|
48 |
BASE (24-31) |
G |
B/D |
O |
AVL |
LIMIT (16-19) |
- 32-bitowe pole BASE zawierające adres bazowy.
- 1-bitowe pole G (ang. granularity) zawierające znacznik ziarnistości
- 20-bitowe pole LIMIT zawierające długość segmentu w bajtach mierzoną w bajtach, gdy G=0 lub w 4KB, gdy G=1
- 4-bitowe pole TYPE określające typ segmentu i prawa dostępu do niego
- 1-bitowe pole DPL (ang. Descriptor Privilege Level) numer uprawnienia deskryptora
- 1-bitowe pole P zawierające znacznik obecności segmentu w pamięci
- 1-bitowe pole D lub B (nazwa zależy od typu segmentu) określające, czy segment jest adresowny 16, czy 32-bitowo
- 1-bitowe pole S wyróżnik deskryptora segmentu programowego
Adres bazowy jest adresem liniowym początku segmentu.
Next: Selektor
Up: Segmentacja
Previous: Segmentacja
Wojciech Jaworski
2001-12-16