Reálný režim - Real mode

Reálný režim , nazývaný také režim skutečnou adresu , je provozní režim všech x86 kompatibilních procesorů . Název režimu se odvozuje od skutečnosti, že adresy v reálném režimu vždy odpovídají skutečným umístěním v paměti. Skutečný režim je charakterizován 20bitovým segmentovým adresním prostorem paměti (dává přesně 1 MB adresovatelné paměti) a neomezeným přímým softwarovým přístupem ke všem adresovatelným pamětím, I / O adresám a perifernímu hardwaru. Reálný režim neposkytuje žádnou podporu pro ochranu paměti, multitasking nebo úroveň oprávnění kódu.

Před vydáním modelu 80286 , který představil chráněný režim , byl skutečný režim jediným dostupným režimem pro procesory x86; a kvůli zpětné kompatibilitě se všechny procesory x86 po restartu spouštějí v reálném režimu, i když při spuštění v jiných režimech je možné emulovat skutečný režim v jiných systémech.

Dějiny

Architektura 286 zavedla chráněný režim , který umožňoval (mimo jiné) ochranu paměti na hardwarové úrovni. Používání těchto nových funkcí však vyžadovalo nový operační systém, který byl speciálně navržen pro chráněný režim. Protože základní specifikací návrhu mikroprocesorů x86 je, že jsou plně zpětně kompatibilní se softwarem napsaným pro všechny x86 čipy před nimi, čip 286 byl spuštěn v „reálném režimu“ - tedy v režimu, který vypnul novou paměť funkce ochrany, aby mohl provozovat operační systémy napsané pro 8086 a 8088 . Od roku 2018 jsou aktuální procesory x86 (včetně procesorů x86-64 ) schopny zavádět operační systémy v reálném režimu a mohou spouštět software napsaný pro téměř jakýkoli předchozí x86 čip bez emulace nebo virtualizace.

PC BIOS, který IBM představila, funguje v reálném režimu, stejně jako operační systémy DOS ( MS-DOS , DR-DOS atd.). Rané verze systému Microsoft Windows běžely v reálném režimu. Windows / 386 umožnil částečně využít chráněný režim, což bylo plněji realizováno ve Windows 3.0 , který mohl běžet v reálném režimu nebo využívat chráněný režim způsobem Windows / 386. Windows 3.0 měl ve skutečnosti několik režimů: „skutečný režim“, „standardní režim“ a „režim 386-rozšířený“, druhý vyžadoval některé virtualizační funkce procesoru 80386, a proto by na 80286 nefungoval pro skutečný režim a bylo to první běžné operační prostředí, které vyžadovalo alespoň procesor 80286. Žádnou z těchto verzí nelze považovat za moderní operační systém x86, protože přešli do chráněného režimu pouze pro určité funkce. Unix , Linux , OS / 2 , Windows NT 3.xa novější Windows NT atd. Jsou považovány za moderní operační systémy, protože při spuštění přepnou CPU do chráněného režimu, nikdy se nevrátí do reálného režimu a poskytují všechny výhody chráněného režimu Celou dobu. 64bitové operační systémy používají skutečný režim pouze ve fázi spuštění a jádro operačního systému přepne CPU do dlouhého režimu . Stojí za zmínku, že chráněný režim 80286 je podstatně primitivnější než vylepšený chráněný režim zavedený s 80386; druhý se někdy nazývá 386 chráněný režim a je to režim, ve kterém běží moderní 32bitové operační systémy x86.

Adresovací kapacita

Modely 8086, 8088 a 80186 mají 20bitovou sběrnici adres, ale neobvyklé segmentované schéma adresování, které společnost Intel zvolila pro tyto procesory, ve skutečnosti vytváří efektivní adresy, které mohou mít 21 významných bitů. Toto schéma posune 16bitové číslo segmentu vlevo o čtyři bity (vytvoření 20bitového čísla se čtyřmi nejméně významnými nulami) před přidáním 16bitového offsetu adresy; maximální součet nastane, když segment i offset jsou 0xFFFF, čímž se získá 0xFFFF0 + 0xFFFF = 0x10FFEF. Na 8086, 8088 a 80186 je výsledkem efektivní adresy, která přetéká 20 bitů, že adresa se „zalomí“ na nulový konec rozsahu adres, tj. Je převzata modulo 2 ^ 20 (2 ^ 20 = 1048576 = 0x100000). 80286 má však 24 adresových bitů a počítá efektivní adresy na 24 bitů i v reálném režimu. Proto pro segment 0xFFFF a offset větší než 0x000F by 80286 ve skutečnosti umožnil přístup na začátek druhého megabajtu paměti, zatímco 80186 a starší by přistupovaly k adrese rovné [offset] -0x10, která je na začátek prvního megabajtu. (Všimněte si, že na 80186 a dřívějších je první kilobyte adresového prostoru, počínaje adresou 0, trvalým, nepohyblivým umístěním tabulky vektorů přerušení.) Takže skutečné množství paměti adresovatelné procesory 80286 a novějšími x86 v reálném režimu je 1 MB + 64 KB - 16 B = 1 114 096 B.

Linka A20

Některé programy, které předcházely 80286, byly navrženy tak, aby využívaly chování adresování paměti typu wrap-around (modulo), takže 80286 představoval problém pro zpětnou kompatibilitu. Vynucení 21. adresního řádku (skutečný logický signální vodič vycházející z čipu) na logické minimum, představující nulu, má za následek efekt modulo-2 ^ 20, který odpovídá aritmetice adresy dřívějších procesorů, ale 80286 nemá interní schopnost vykonávat tuto funkci. Když IBM použila 80286 ve svém IBM PC / AT , tento problém vyřešila zahrnutím softwarově nastavitelné brány pro povolení nebo zakázání (vynulování) adresového řádku A20 mezi pin A20 na 80286 a systémovou sběrnici; toto je známé jako Gate-A20 (brána A20) a v čipových sadách PC je implementováno dodnes. Většina verzí ovladače rozšířené paměti HIMEM.SYS pro IBM- / MS-DOS skvěle zobrazovala po načtení zprávy, že nainstalovali „obslužnou rutinu A20“, software pro ovládání brány A20 a její koordinaci podle potřeb programů . V chráněném režimu musí být linka A20 povolena, jinak dojde k fyzickým chybám adresování, což pravděpodobně povede ke zhroucení systému. Moderní starší zavaděče (například GNU GRUB ) používají řadu A20.

Přepínání do reálného režimu

Společnost Intel zavedla do rodiny x86 chráněný režim s úmyslem, aby operační systémy, které jej používaly, fungovaly zcela v novém režimu a aby všechny programy spuštěné v operačním systému chráněného režimu běžely také v chráněném režimu. Z důvodu podstatných rozdílů mezi reálným režimem a dokonce i poměrně omezeným chráněným režimem 286 nemohou programy napsané pro reálný režim běžet v chráněném režimu, aniž by byly přepsány. Proto se širokou základnou existujících aplikací v reálném režimu, na kterých uživatelé záviseli, zanechání skutečného režimu představovalo pro průmysl problémy a programátoři hledali způsob, jak přepínat mezi režimy podle libosti. Intel však v souladu se svými záměry pro využití procesoru poskytl snadný způsob přepnutí do chráněného režimu na 80286, ale žádný snadný způsob přepnutí zpět do skutečného režimu. Před modelem 386 byl jediným způsobem, jak přepnout z chráněného režimu zpět do skutečného, ​​resetování procesoru; po resetu se vždy spustí v reálném režimu, aby byl kompatibilní se staršími procesory x86 zpět na 8086. Resetování procesoru nevymaže RAM systému, takže toto, i když je to trapné a neefektivní, je ve skutečnosti proveditelné. Z chráněného režimu se stav procesoru uloží do paměti, poté se procesor resetuje, restartuje v reálném režimu a provede nějaký kód v reálném režimu pro obnovení uloženého stavu z paměti. Poté může spustit další kód reálného režimu, dokud program není připraven přepnout zpět do chráněného režimu. Přepnutí do reálného režimu je časově nákladné, ale tato technika umožňuje programům v chráněném režimu využívat služby, jako je BIOS, který běží zcela v reálném režimu (původně navržen pro model osobního počítače IBM založeného na 8088 (typ stroje)) 5150). Tato technika přepínání režimů je také metodou používanou DPMI (v reálném, ne emulovaném, DOS) a rozšiřovači DOS, jako je DOS / 4GW, aby umožnily spuštění programů chráněného režimu pod DOS; systém DPMI nebo extender DOS se přepne do reálného režimu, aby vyvolal volání systému DOS nebo BIOS, poté se přepne zpět a vrátí se do aplikačního programu, který běží v chráněném režimu.

Pokles

Přechod na jádro NT vedl k tomu, že operační systém nepotřeboval DOS ke spuštění počítače a nemohl jej používat. Potřeba restartovat počítač v reálném režimu MS-DOS klesla po Windows 3.1x, dokud již nebyla v systému Windows ME podporována . Jediným způsobem, jak aktuálně spouštět aplikace DOS, které vyžadují skutečný režim z novějších verzí systému Windows, je použití emulátorů, jako jsou virtualizační produkty DOSBox nebo x86 .

Viz také

Reference

externí odkazy