Neskutečný režim - Unreal mode
Část série na |
Mikroprocesor režimy pro x86 architektura |
---|
|
První podporovaná platforma uvedená v závorkách |
v x86 výpočetní, neskutečný režim, taky velký skutečný režim, obrovský skutečný režim, plochý reálný režimnebo režim vúdú[1] je varianta skutečný režim, ve kterém byl jeden nebo více deskriptorů segmentů načten s nestandardními hodnotami, jako jsou 32bitové limity umožňující přístup k celé paměti. Na rozdíl od svého názvu nejde o samostatný režim adresování, ve kterém mohou procesory x86 pracovat. Používá se v 80286 a novější procesory x86.
Přehled
Z důvodů efektivity 80286 a všechny novější procesory x86 používají základní adresu, velikost a další atributy uložené ve svých interních deskriptor segmentu ukládat do mezipaměti, kdykoli počítat efektivní adresy paměti, dokonce i v reálném režimu. Proto modifikace interního deskriptoru segmentu umožňuje změnit některé vlastnosti segmentů v reálném režimu, jako je velikost adresovatelné paměti. Tato technika se stala široce používanou a je podporována všemi procesory Intel.[2]
HIMEM.SYS používá tuto funkci k řešení rozšířená paměť,[3] pokud není DOS přepnut na běh v virtuální režim 8086 to je nekompatibilní s nereálným režimem.
Jedna z mála her - ne-li jediná -, která používala neskutečný režim, byla Ultima VII.[4]
Neskutečný režim stále používá BIOS kód, protože se jedná o počáteční režim moderních procesorů Intel.[5] Kromě toho Režim správy systému (SMM) v procesorech Intel 386SL a novějších uvádí procesor do nereálného režimu.[6]
Program v nereálném režimu může volat 16bitový kód naprogramovaný pro reálný režim (BIOS, jádro DOS a ovladače) bez jakéhokoli thunking. Díky tomu je ovladač neskutečného režimu jednodušší než a DPMI Řidič. Neskutečný režim je však nekompatibilní s operačními systémy chráněného režimu, jako jsou Windows 3.x / 9x / NT a OS / 2.
Povolení neskutečného režimu
Chcete-li přepnout mikroprocesor 80386 nebo vyšší do nereálného režimu, musíte nejprve vstoupit do programu chráněný režim, najděte nebo vytvořte plochý deskriptor v GDT nebo LDT, načtěte některé registry datových segmentů pomocí příslušného "selektoru" chráněného režimu a poté přepněte zpět do reálného režimu. Po návratu do reálného režimu bude procesor pokračovat v používání deskriptorů uložených v mezipaměti, jak je stanoveno v chráněném režimu, což umožní přístup ke 4 GiB rozšířená paměť ze skutečného režimu.[7]
Mikroprocesor 80286 lze uvést do nereálného režimu pouze pomocí nezdokumentované instrukce LOADALL upravit skryté registry základních segmentů tak, aby ukazovaly na umístění zdrojové nebo cílové paměti nad 1 MiB.[3]
Počínaje verzí 80386 mohou programy v reálném režimu používat 32bitové registry s předponou přepisu velikosti adresy.[8] To umožňuje programům používat adresu jako DS: [EBX]. V normálním reálném režimu dojde k poruše, pokud EBX překročí 0xFFFF. V nereálném režimu je přístup povolen.
Varianty neskutečného režimu
Jak je popsáno výše, nereálný režim obvykle zahrnuje použití jednoho nebo více selektorů dat k efektivnějšímu adresování dat v paměti. To byla běžná praxe a často se jí říká „plochý reálný režim“[9] nebo „velký skutečný režim“.[10] „Obrovský skutečný režim“ je variantou, kde je také segment kódu rozšířen na 4 GiB.[11][7]
Zvláštního případu nereálného režimu lze dosáhnout načtením voliče kódu (CS) z deskriptoru s 32bitovým atributem (bit „D“) nastaveným na jeden. Tato zřídka používaná varianta přináší některé výhody, hlavně proto, že umožňuje vyhnout se předponám pro přepsání velikosti operandu, které jsou obvykle vyžadovány při použití 32bitového adresování v 16bitovém segmentu kódu, ale je obtížnější jej nastavit. Protože přerušení v reálném režimu automaticky nezachovávají vysokých šestnáct bitů ukazatele rozšířené instrukce (EIP), musí kód buď zapadnout do nízké části segmentu kódu, nebo být schopen nějakým způsobem zachovat a obnovit vysoké bity EIP. Kromě toho, pokud mají být volány funkce přerušení systému BIOS nebo DOS, které používají 16bitový kód, je nutné přepínat režimy pro přepínání bitu „D“ tam a zpět. Některé emulátory nepodporují emulaci programů spuštěných v této variantě nereálného režimu.[12]
Viz také
Reference
- ^ Salihun, Darmawan (16. 9. 2013). „Inicializace mapy systémových adres v architektuře x86 / x64, část 1: Systémy založené na PCI“ (PDF). Citováno 2019-08-19.
- ^ Gutmann, Peter (2004) [2003]. Kryptografická bezpečnostní architektura: návrh a ověření. Springer Science & Business Media. p.58. ISBN 978-0-387-95387-8. Citováno 2017-01-04.
[…] Neskutečný režim se stal tak široce používaným […], že jej společnost Intel byla nucena podporovat ve všech pozdějších procesorech, ačkoli jeho přítomnost nebyla nikdy zdokumentována […]
- ^ A b Nečasek, Michal (18.03.2011). „HIMEM.SYS, neskutečný režim a LOADALL“. Muzeum OS / 2. Archivováno od původního dne 2017-01-03. Citováno 2017-01-03.
- ^ Riiser, Haakon. „HIMEM.SYS a neskutečný / plochý reálný režim, EMM386 a UMB“. Diskusní skupina: comp.os.msdos.programmer. Archivováno od původního dne 2019-04-21. Citováno 2017-10-14.
- ^ Pelner, Jenny; Pelner, James. „Minimální zavaděč architektury Intel“. Citováno 2017-10-14.
- ^ Domas, Christopher (2015). „Paměťová díra: Chyba zabezpečení při eskalaci architektonických oprávnění“ (PDF). Battelle Memorial Institute. Archivováno (PDF) z původního dne 2017-01-04. Citováno 2017-01-04.
Procesor načte architektonicky definovaný režim stavu systému „Neskutečný“
- ^ A b „Neskutečný režim“. Archivováno od původního dne 2017-01-03. Citováno 2015-02-18.
- ^ "Kódování instrukcí X86-64". Archivováno od původního dne 2017-01-03. Citováno 2015-02-18.
- ^ „Plochý reálný režim“. 16. 3. 1998. Archivovány od originál dne 2017-10-14.
- ^ Brown, Ralf D. „Seznam přerušení“. INT 80 (AMI BIOS). Citováno 2017-10-14.
- ^ Brown, Ralf D. „Seznam přerušení“. INT 78 (ovladač HugeRealMode). Citováno 2017-10-14.
- ^ Grysztar, Tomasz (2010-09-17). „režim REAL“. Citováno 2017-10-14.
Další čtení
- IBM Operating System / 2 Technical Reference - Programming Family (PDF). 1 (1. vyd.). IBM. Září 1987 [1986]. Archivováno (PDF) od původního dne 2017-01-03.
- Roden, Thomas (listopad – prosinec 1989). Napsáno v Irvine, Kalifornie, USA. „Čtyři gigabajty v reálném režimu - úhledný trik pro přístup k velkým paměťovým prostorům na 80386 ze systému DOS“. Programmer's Journal - The Resource Journal for IBM PC Programmers. 386 Teď. Sv. 7 č. 6. Eugene, Oregon, USA: Oakley Publishing Company. str. 89–94. ISSN 0747-5861. Archivováno od původního dne 2020-02-21. Citováno 2020-02-21.
- Williams, Al (červenec 1990). „DOS + 386 = 4 gigabajty!“. Dr. Dobb's Journal. Sv. 15. Lidová počítačová společnost. 62–71. [1][2] Errata: [3]
- Williams, Al (1991). „Kapitola 18: Přístup ke 4 gigabajtům v reálném režimu“. DOS 5: Příručka pro vývojáře - Průvodce pro pokročilé programování v systému DOS (1. vyd.). Redwood City, Kalifornie, USA: M&T Publishing, Inc. / Prentice Hall International (UK) Limited. str. 691–712. ISBN 0-13-217993-8. (Pozn. Implementuje „Velký reálný režim“ SEG4G.)
- Lespinasse, Michel. „Jak vyhodit správce paměti“. Amiens, Francie: Walken / Impact Studios. Archivováno od původního dne 2017-01-03. Citováno 2015-10-21.
- Příručka vývojáře softwaru Intel IA-32 - svazek 3A
- Nezkrácený Pentium 4: Genealogie procesoru IA32, Addison Wesley ISBN 0-321-24656-X. „Velký skutečný režim“
- „Volat server HugeRealMode“ „Povolit dvoustupňový model přerušení“ „funkce“.
- Nečasek, Michal (15. 06. 2018). „Stručná historie neskutečného režimu“. Muzeum OS / 2. Archivováno od originálu na 2018-09-15. Citováno 2018-09-15.
- „Registry mezipaměti deskriptoru“.
- Chappell, Geoff (leden 1994). Schulman, Andrew; Pedersen, Amorette (eds.). Interní systémy DOS. Programovací řada Andrewa Schulmana (1. tisk, 1. vyd.). Nakladatelství Addison Wesley. ISBN 978-0-201-60835-9. (xxvi + 738 + iv stránky, 3,5 "disketa [4][5] ) Errata: [6][7][8]
- https://patents.google.com/patent/US5642491 "Metoda pro rozšíření rozsahu adresovatelné paměti při zpracování v reálném režimu pro usnadnění načítání velkých programů do vysoké paměti"