Reálný mód

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Reálný mód neboli režim reálných adres je základní pracovní režim procesorů z rodiny x86. Rozlišuje se až od řady Intel 80286, kdy se objevil také režim chráněné virtuální paměti, ale fakticky odpovídá jedinému pracovnímu režimu starších řad Intel 80186 a Intel 8086. To je také důvod, proč procesory z rodiny x86 (včetně nejmodernějších 64bitových) dodnes z důvodu zpětné kompatibility začínají svůj běh právě v reálném módu a do jiného režimu je musí explicitně přepnout operační systém.

Využití[editovat | editovat zdroj]

V režimu reálných adres pracuje například BIOS a také v něm pracovaly operační systémy z rodiny DOSů ( MS-DOS, DR-DOS, atd.) a dokonce i nejstarší verze Microsoft Windows (Windows 3.0 už běžely i v chráněném režimu a naopak Windows 386 běžely pouze v chráněném režimu). Prakticky všechny moderní operační systémy na osobních počítačích (UN*Xy v čele s Linuxem, OS/2, Windows 95 a novější, atd.) běží v reálném módu pouze krátkou chvíli při startu, než přepnou procesor do chráněného režimu.

Vlastnosti[editovat | editovat zdroj]

Typickými vlastnostmi režimu reálných adres jsou segmentovaná paměť s 20bitovou adresací (tedy nanejvýš 1 MiB přímo adresovatelné paměti) a neomezený přímý přístup do celé paměti i ke všem perifériím. Má tedy mizivou podporu pro bezpečný multitasking.

Adresace[editovat | editovat zdroj]

Adresa je v módu reálných adres určena dvěma registry, segmentovým a offsetovým, a vznikne jako součet hodnoty v segmentovém registru vynásobené 16 (tedy posunuté o 4 bity doleva) a hodnoty v offsetovém registru, díky přenosu tak může být výsledkem až 21bitové číslo: šestnáctkově 0xFFFF0 + 0xFFFF = 0x10FFEF. Na starších procesorech Intel 8086, Intel 8088, Intel 80186 vzhledem k jejich 20bitové sběrnici je ve výsledku brána hodnota výsledku modulo 2^{20}, tedy dohromady je možné adresovat přesně jeden mebibajt. Na procesoru Intel 80286, který měl 24bitovou sběrnici, k modulení nedocházelo a tak bylo možné tímto způsobem i v reálném režimu adresovat část druhého mebibajtu paměti, přesněji 1 mebibajt + 64 kibibajtů - 16 bajtů, dohromady 1114096 bajtů.

Takové rozdílné chování představovalo problém z hlediska zpětné kompatibility, protože některé starší programy na modulení spoléhaly. Na počítačích IBM PC (a kompatibilních) se tento problém řeší na úrovni čipové sady: Pokud je nastavena do režimu kompatibilního se staršími procesory, je zkrátka nulována hodnota výstup na pinu A20, který představuje 21. adresovací bit.

Přepínání do reálného režimu[editovat | editovat zdroj]

Záměrem Intelu při zavádění režimu chráněné virtuální paměti bylo, aby v tomto režimu v budoucnu běžely všechny operační systémy i jejich programy. Tomu odpovídala i podpora přepínání režimů: zatímco pro přepnutí z reálného režimu do chráněného dal Intel k disposici snadný postup, druhým směrem žádný snadný způsob nepřipravil a na procesorech řady 80286 bylo jediným způsobem resetovat procesor.

Protože režimy se podstatně liší a programy napsané pro jeden z nich je potřeba upravit, aby běžely v druhém, bylo vzhledem k množství programů pro reálný režim zpočátku nereálné, aby se od jeho používání zcela upustilo. Řešením bylo používat ono resetování procesoru, byť se jedná o poměrně nezvyklou a časově náročnou operaci. Při resetování samotného procesoru totiž nedochází ke smazání paměti a při správném ošetření tedy můžeoperační systém přepnout tam i zpět bez následků.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Real mode na anglické Wikipedii.