Valós mód

Valós mód (vagy valós cím mód; angol  real-address mode ) - x86 architektúrájú processzorok működési módja , amely szegmens memóriacímzést használ (a memóriacella címe két számból alakul ki: a szegmens elejének címe 4 bittel eltolva és a cella eltolása a szegmens elejétől; bármely folyamat hozzáfér a számítógép teljes memóriájához). Kezdetben a módnak nem volt neve, csak a 80286 processzorok létrehozása után hívták "valódinak", amelyek támogatták a " védett " módot (a módot "védett"-nek hívják, mert a folyamatok egymástól "védésére" jött létre - a folyamatok egymás memóriaterületéhez való hozzáférésének megakadályozása érdekében, de a 80286-os processzorok esetében a védett mód nem volt igazán „biztonságos”, mivel ezek a processzorok nem támogatták a memórialapozást , amelyet először a 80386-os processzorokban valósítottak meg ).

Leírás

Valós módban egy memóriacella virtuális címe két számból áll:

A memóriacella fizikai vagy lineáris címének kiszámításához a processzor kiszámítja a szegmens kezdetének fizikai címét - a virtuális cím szegmens részét megszorozza 16-tal (vagy ennek megfelelően 4 -gyel balra tolja ). bitek ), majd hozzáadja a kapott számot a szegmens elejétől eltolva:

szegmens_rész × 16 + eltolás

Ha a cím szegmens része nincs megadva (az utasításkódban ), a processzor a cím szegmens részét az egyik szegmensregiszterből olvassa be (amelyből az utasításkódtól függ).

Ezzel a címzéssel a 0400 h : 0001h és 0000h: 4001h címek (a "h" betű azt jelenti, hogy a szám hexadecimális jelöléssel van írva ) ugyanarra a memóriacellára utal, mivel 400h × 16 + 1 = 0 × 16 + 4001h .

Minimális cím: 0000h:0000h ( 0 bájt ).

Maximális cím: FFFFh:FFFFh ( FFFFh × 16 + FFFFh) = 10FFEFh =  1114095 B = 100000h + 10000h - 11h = Mi B + 64  Ci B - 17 B ).

A fizikai cím kiszámításának leírt módszere lehetővé teszi a memória ( 1 MiB + 64 KiB - 17 B + 1 B ) címzését (címtartomány 0000h ... 10FFEFh ); 1 bájt hozzáadódik a nulla címen lévő bájthoz. A 8086 / 8088 processzorok azonban csak 20 címsorral (fém sávokkal) rendelkeznek, így a rendelkezésre álló memória mérete 2 20 B = 1 MiB (címtartomány 0000h ... FFFFFh ), a címzés pedig magasabb ( 100000h tartományban ... 10FFEFh ) túlcsordulást ("csavar") okoz – a cím legjelentősebb bitjét figyelmen kívül hagyja, és 64 KiB -ot ér el a kezdőcímekben ( 0000h ... FFEFh ).

A 80286-os processzorok 24 bites címbusszal rendelkeznek ( 2 24 B  = 16 MiB memória címezhető), így nem csordulnak túl („overflow”).

Az IBM PC /AT számítógépek az Intel 80286 processzorra épülnek , és az IBM PC-vel és az IBM PC/XT számítógépekkel (Intel 808x-re épített) kompatibilitás fenntartása érdekében logikai elemmel ( gate ) vannak felszerelve, amely a 21. címsor működését vezérli. (vezeték) (jelölése "A20"), és neve "Gate A20". Ez a logikai elem alapértelmezés szerint le van tiltva (a kompatibilitási módnak megfelelően), és a billentyűzetvezérlőn (általában az Intel 8042 chipen ) keresztül vezérelhető.

Használat

A számítógép bekapcsolása vagy a processzor alaphelyzetbe állítása után az x86 processzor valós módban indul el . Ez a mód elindítja egy IBM-PC-kompatibilis számítógép BIOS -kódjának végrehajtását . Valós módban néhány hardver inicializálása elvégezhető (például a chipkészlet RAM -vezérlő inicializálása ), amely a programok működéséhez szükséges a processzor védett módba kapcsolása után . Ha a hardver inicializálását végző program kódjának és adatainak mérete kicsi, akkor ez a program valós módban is végrehajtható. Így például a DOS valós módban működik, és nem próbálja meg védett módba helyezni a processzort. A Microsoft Windows korai verziói csak valós módban futhattak. Még a Windows 3.0 is, a három működési mód közül valós üzemmódban valósult meg, és a 8086-os processzorral is futtatható volt.

A 80286-os és újabb processzorok valós módban működve általában ugyanazokkal a címtérkorlátokkal rendelkeznek , mint a 8086-os processzorok.. A valós módra tervezett programok speciális szoftvereszközöket igényelnek a nagyobb memória használatához. A 80286-os és újabb processzorokkal rendelkező gépeken például olyan illesztőprogramokat használhat, mint a HIMEM.SYS . A nem dokumentált LOADALL parancs is kínál lehetőségeket (ami azonban számos nehézséggel jár). A 80386-os és újabb processzorok bevezettek egy olyan funkciót, amelyet az Intel nem dokumentált, és amely lehetővé teszi, hogy a processzort informálisan " irreal " módnak nevezett módba állítsa . Ha irreális módban fut, a program, bár bizonyos korlátozásokkal, használhat 32 bites fizikai címteret ( 2 32  B = 4 GiB ).

Bár az Intel nem biztosította a 80286-os processzor védett módból valós módba való átkapcsolásának lehetőségét, az IBM PC / AT számítógép rendelkezik ezzel a képességgel a hardverfunkciók és a BIOS támogatása miatt . Az IBM PC/AT lehetővé teszi a programok számára, hogy visszaállítási jelet küldjenek a processzornak. A BIOS kód különbséget tud tenni az újraindítási okok/módok között azáltal, hogy megvizsgálja a 0Fh címen található CMOS nem felejtő memóriahely tartalmát és a 40h :72h címen található RAM helyét . Bármely program, megfelelő értékeket írva a megnevezett memóriacellákba, és visszaállítási jelet ad a processzornak, kényszerítheti a processzort az újraindításra; újraindítás után a processzor elkezdi végrehajtani a BIOS kódot; a BIOS kód beolvassa a fenti memóriacellák értékeit, nem hajtja végre a kezdeti betöltést, nem változtatja meg a RAM tartalmát (ugyanazok az adatok maradnak a RAM-ban, mint a processzor újraindítása előtt), és továbbítják vezérlés a RAM-ban található kódra a 40h:67h címmel rendelkező RAM cellába írt címen . Így a program többször is tud váltani a védett és a valós mód között, bár ez a módszer viszonylag nagy időráfordítást igényel minden egyes váltásnál.

A védett módból valós módba történő „normál” (trükkök nélküli) szoftveres átállás lehetőségét az Intel csak a 80386-os processzorokban és az újabb modellekben biztosította. A 80386-ban azonban egy másik új funkció is nagy értékű - a virtuális 8086 -os mód (V86, VM86). V86 módban a programok a 8086-os processzor memóriájának régi (szegmentális) címzésének módját használhatják; ebben az esetben a processzor védett módban lesz, és a 8086-os szabályok szerint számított fizikai (lineáris) cím lapozás lesz. A V86 módnak köszönhetően lehetővé vált virtuális gépek létrehozása . Az operációs rendszer korlátozhatja a hozzáférést egy adott memóriaterülethez (lásd: memóriavédelem ) minden virtuális gép esetében, virtuális memóriát foglalhat le számukra a valódi (fizikai) helyett, és szabályozhatja az I/O portokhoz való hozzáférést . A fentiek a DOS operációs rendszer munkájának megszervezésére szolgálnak többfeladatos operációs rendszerek , például OS / 2 és Microsoft Windows irányítása alatt. Ugyanakkor minden DOS-os virtuális gép számára csak 1 MiB címterület áll rendelkezésre , és egyszerre több DOS-os virtuális gép is futhat.

Címtér szerkezete

Az IBM-PC-kompatibilis számítógép címterét valós módban négy részre osztják:

A " main " ( az angol  hagyományos memória ) nevű memóriaterület a megszakítási vektortáblázat és a különféle BIOS -adatok tárolására szolgál , a RAM-ban található 0000h:0000h címtől kezdve , 640 KiB -ot foglal el, és 16 bites DOS - programok használhatják .

A memóriaterület az úgynevezett " felső " vagy " felső " ( angol  felső memóriaterület , UMA ) , 384 KiB -ot foglal el , a számítógép hardverével kapcsolatos információk tárolására szolgál , feltételesen három 128 KiB -os területre van osztva . Az első terület a videomemória tárolására szolgál . A BIOS - adapterek a második területen keresztül érhetők el . A harmadik területet a BIOS kód használja, de általában nem teljesen (általában 64 KiB marad ). A címtér többi része a felső területről speciális illesztőprogramok (például EMM386.EXE , EMS.EXE, LIMEMS.EXE stb.) és/vagy bővítőeszközök segítségével a bővített memória elérésére használható annak megfelelően. specifikáció ( angol  ) EMS,bővített memória specifikáció

A " magas " memóriaterület ( angolul  high memory area , HMA ) közvetlenül az első mebibyte után található, és 64 KiB mínusz 16 bájtot foglal el . Megjelenését a 80286-os processzor egy tulajdonságának köszönheti , amely 24 címsorral rendelkezik, és az FFFFh: 000Fh feletti címek elérésekor a memória második mebibájtjára megy a hozzáférés (az első mebibyte eleje helyett, mint a 8086 / 8088 ). Ez a "kiegészítő" (angol kiterjesztett) memória egy részhalmaza.

A " kiegészítő " (eng. extended ) nevű memóriaterület a specifikációja szerint ( eng.  e x tended memory specification , XMS ) elérhető a 16 bites programok számára, az első mebibyte felett található címekről indul ki, mérete pedig attól függ, a számítógép RAM-jába telepített méret.

Címzavar

Lásd még