Deskriptor segmentu - Segment descriptor - Wikipedia
V adresování paměti pro Intel x86 počítačové architektury, deskriptory segmentů jsou součástí segmentační jednotky, které se používají k překladu a logická adresa na lineární adresu. Deskriptory segmentů popisují segment paměti uvedené v logické adrese.[1]Deskriptor segmentu (8 bajtů dlouhý v 80286 a novějších) obsahuje následující pole:[2]
- Základní adresa segmentu
- Limit segmentu, který určuje velikost segmentu
- Bajt přístupových práv obsahující informace o mechanismu ochrany
- Kontrolní bity
Struktura
Deskriptor segmentu x86 a x86-64 má následující formu:[3]
31 | — | 24 | 23 | 22 | 21 | 20 | 19 | — | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | — | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Základní adresa [31:24] | G | D / B | L | AVL | Limit segmentu [19:16] | P | DPL | 1 | Typ | C / E | R / W | A | Základní adresa [23:16] | |||||||
Základní adresa [15: 0] | Limit segmentu [15: 0] |
Kde jsou pole:
- Základní adresa
- 32bitová počáteční adresa paměti segmentu
- Limit segmentu
- 20bitová délka segmentu. (Přesněji řečeno, adresa posledních přístupných dat, takže délka je ještě o jednu větší než zde uložená hodnota.) Jak přesně by to mělo být interpretováno, závisí na dalších bitech deskriptoru segmentu.
- G = Granularita
- Pokud je jasné, limit je v jednotkách bajtů, maximálně 220 bajtů. Pokud je nastaveno, limit je v jednotkách stránek s 4096 bajty, maximálně pro 232 bajtů.
- D = Výchozí velikost operandu
- Pokud je to jasné, jedná se o 16bitový segment kódu; pokud je nastaven, jedná se o 32bitový segment.
- B = velký
- Pokud je nastavena, maximální velikost offsetu pro datový segment se zvýší na 32bitový 0xffffffff. Jinak je to 16bitový max 0x0000ffff. V zásadě stejný význam jako „D“.
- L = dlouhý
- Pokud je nastaven, jedná se o 64bitový segment (a D musí být nula) a kód v tomto segmentu používá 64bitové kódování instrukcí. „L“ nelze nastavit současně s „D“ neboli „B“.
- AVL = k dispozici
- Pro použití softwaru, nepoužívá hardware
- P = přítomný
- Pokud je to jasné, při každém odkazu na tento segment se vygeneruje výjimka „segment není přítomen“
- DPL = úroveň oprávnění deskriptoru
- Pro přístup k tomuto deskriptoru je vyžadována úroveň oprávnění (vyzvánění)
- Typ
- Pokud je nastaven, jedná se o deskriptor segmentu kódu. Pokud je to jasné, jedná se o deskriptor segmentu dat / zásobníku, který má „D“ nahrazeno „B“, „C“ nahrazeno „E“ a „R“ nahrazeno „W“. Toto je ve skutečnosti speciální případ pole 2bitového typu, kde předchozí bit 12 vymazaný jako „0“ odkazuje na více interních systémových deskriptorů pro LDT, LSS a brány.
- C = Shoda
- Kód v tomto segmentu lze volat z méně privilegovaných úrovní.
- E = Rozbalit dolů
- Je-li to jasné, segment se rozšíří od základní adresy až po základnu + limit. Pokud je nastaveno, rozšiřuje se od maximálního posunutí dolů k limitu, což je chování, které se obvykle používá pro hromádky.
- R = čitelné
- Pokud je jasné, segment může být proveden, ale nelze z něj číst.
- W = zapisovatelný
- Pokud je to jasné, datový segment může být čten, ale nelze na něj zapisovat.
- A = přístupné
- Tento bit je hardwarově nastaven na 1, když je segment přístupný, a je vymazán softwarem.
Viz také
Reference
- ^ Bovet, D.P., a Cesati, M. (2000). Porozumění jádru Linuxu (první vydání). O'Reilly & Associates, Inc.
- ^ Tabak, Daniel (1995). Pokročilé mikroprocesory. Vydavatelé Mcgraw Hill. p.149. ISBN 9780070628434.
- ^ Příručka programátora architektury AMD64, svazek 2: Programování systému (PDF) (Technická zpráva). 2013. s. 80. Archivovány od originál (PDF) dne 2018-02-18.
- Tabak, Daniel. Pokročilé mikroprocesory. McGraw Hill and Co.
- Hall, Douglasi. Mikroprocesory a propojení. Publikace McGraw Hill.
Další čtení
- Robert R. Collins (srpen 1998). „Mezipaměť deskriptoru segmentu“. Deník Dr. Dobba.
externí odkazy
Tento počítačový hardware článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |