Reálný a chráněný adresový režim: Porovnání verzí
Bez shrnutí editace |
Bez shrnutí editace |
||
(Není zobrazena jedna mezilehlá verze od stejného uživatele.) | |||
Řádek 65: | Řádek 65: | ||
== Aplikační kompatibilita reálného režimu == | |||
Z největší části, binární kompatibilita s kódem reálného režimu, schopnost k přístupu až 16 MB fyzické paměti a 1GB virtuální paměti byly největší změny na programových aplikacích. Avšak neprobíhalo to bez limitácií, pokud aplikace využila nebo se spoléhala na některé techniky uvedeny níže nebežala: | |||
Aritmetika segmentu | |||
Privilegované instrukce | |||
Přímý hardwarový přístup | |||
Psaní do části kódu | |||
Data provádění | |||
Segmenty překrývání | |||
Použití bios-ových funkcí, protože bios-ové přerušení patří Intel-uVe skutečnosti téměř všechny DOS aplikační programy porušily tyto pravidla. Kvůli těmto omezením byl vytvořen virtuální 8086 režim a povolen s 386. I přes takový potencionálním překážkám, Windows 3.x a jeho nástupci mohou využívat binární kompatibilitu s reálným režimem při spuštění aplikaci Windows 2.x, Které běžely v reálném režimu ve Windows 2.x. | |||
== Virtuální 8086 režim == | |||
S vydáním 386, chráněný režim předvedl něco, co manuály Intel-u nazvali virtuální 8086 režim. Virtuální 8086 režim je navržen, aby vydrželo kódu dříve psanému pro 8086 fungovat bez provozních modifikaci a souběžně s jinými úkoly, bez snížení bezpečnosti nebo stability systému. Virtuální 8086 režim není zpětně slučitelný se všemi programy. Programy, které vyžadují manipulaci segmentu, privilegované instrukce, přímý hardwarový přístup nebo používají samomodifikačný kód, Budou vytvářet výjimky a nebudou spustitelné. Navíc, aplikace běžící ve virtuálním 8086 režimu vytvářejí past s použitím instrukcí, které zahrnují vstup / výstup (I / O), který může záporně ovlivnit výkon. | |||
Kvůli těmto omezením mnoho programů původně navržených k běhu na 8086 nemohly běžet ve virtuálním 8086 režimu. Důsledkem čehož byl systémový program nucen buď ke kompromisní sys-témové bezpečnosti nebo k zpětné kompatibilitě, kterou se zabývá softwarové dědictví. Příklad takových kompromisů může být viděn například u Windows NT, Který vyloučil zpětnou kompatibilitu pro mnoho DOS aplikací. | |||
== Stránkování == | |||
Běžný způsob použití stránkování pro vytvoření prostoru virtuální pamětiPro více detailů navštivte téma Stránkování. | |||
Kromě přidání do virtuálního 8086 režimu, 386 přidal stránkování i ke chráněnému režimu. Navzdory stránkování, systémový program může omezovat a řídit úkolově přístup ke stranám, které jsou součástí paměti. V mnoha operačních systémech, stránkování je používáno k vytvoření nezávislého virtuálního adresového prostoru pro každou úlohu. Toto brání jedné úloze v manipulování paměti jiného úkolu. Stránkování také počítá s odstraňováním stran z primární paměti a k ukládání na pomalejší a větší vedlejší paměť, Jako pevný disk. Architektura x86 dovoluje kontrolu nad stranami přes dvě sady: Adresář strany a tabulky strany. | |||
Původně měl adresář strany velikost jedné strany, 4 KB, a obsahoval 1024 stránkových adresářových záznamů (PDE), i když následující vylepšení architektury x86 přidalo schopnost používat větší velikosti stránky. Každý PDE obsahuje ukazatele k tabulce strany. Tabulka strany rovněž měla původně 4KB a obsahovala 1024 stránkových tabulkových záznamů (PTE). Každý PTE obsahoval ukazatel na skutečnou stránkovou fyzickou adresu a byl použit jen když 4KB strany byly používány. V daném okamžiku může být jen jeden adresář strany v aktivním využívání.[ | |||
== Multitasking == | |||
Od použití prstenců, privilegované volací brány a segmentu na uložení stavu úkoly (TSS), představených spolu s 286, preemptive multitasking byl vyvíjen na architektuře x86. TSS dovoluje uni-verzálnym rejstříkem, segmentovým selektorovým polím a řadou modifikaci bez ovlivňování dalších úkolů. TSS také dovoluje úkoly privilegovaných úrovni a I / O portu být nezávislý na další úkolech. | |||
V mnoha operačních systémech nejsou použity plné rysy TSS. Jako výsledek mnoho operačních systémů používá jako hardware tak i software na vybudování multitaskingového systému. | |||
== Operační systémy == | |||
Operační systémy jako OS / 2 1.x se pokoušejí přepínat procesor mezi chráněnými a skutečnými režimy. Obojí je pomalé a nebezpečné, protože program reálného režimu může rychle spadnout. OS / 2 1.x definuje omezující programovací pravidla dovolením Rodiny API nebo velkým skokem. Tím pádem program může běžet buď v reálném nebo chráněném režimu. | |||
Některé dřívější Unix operační systémy, OS / 2 1.x a Windows používali tento režim. Windows 3.0 byl schopen spouštět v reálném režimu programy v 16bitovém chráněném režimu. Windows 3.0, Když přepíná na chráněný režim, udržuje jedinou privilegovanou úroveň modelu, který byl používán v reálném režimu, který je důvodem proč windowskou aplikace a dlls mohou zahákne přerušení a udělat přímý hardwarový přístup. To trvalo až po Windows 9x sérii. Pokud je Windows 1.x nebo 2.x program psaný vhodně a vyhýbá se aritmetickému segmentu, bude fungovat stejně v obou režimech. Windows programy se obecně vyhýbají aritmetickému segmentu, protože Windows implementuje software virtuální paměťové schémata, pohyblivý kód programu a dat v paměti, když programy neběží, takže manipulace absolutní adresy je nebezpečná; programy by se měly pouze přidržovat kliky k blokům paměti, když neběží. Spouštění starého programu dokud Windows 3.0 běží je ošetřeno v chráněných režimech spuštěním upozornění, navrhne buď bežanie Windows v reálném režimu nebo aktualizaci na novou verzi aplikace. Není možné aby některé GUI programy běžely v 16-ti bitovém chráněném režimu a jiný GUI program běžel v reálném režimu. Ve Windows 3.1 reálný režim zmizel. | |||
Dnes, 16-ti bitový chráněný režim je ještě využíván pro bežanie dědičných aplikací, Např. DPMI kompatibilní s DOS rozšiřovacího programy (přes virtuální DOS stroje) Nebo Windows 3.x aplikace (přes Windows na Windows podsystém) a jisté třídy ovladačů zařízení v OS / 2 2.0 a pozdější, všechny pod kontrolou 32 bitového jádra. | |||
Aktuální verze z 20. 6. 2010, 16:05
Chráněný režim
Chráněný režim nebo chráněna virtuální adresace je provozní režim CPU kompatibilních s x86 .
Poprvé byl přidán do architektury x86tiek v roce 1982 , vydala ho společnost Intel jako procesor 80286 (286), ale až od procesoru 80386 (386) v roce 1985 se začal využívat v operačních systémech a aplikacích. Chránený režim dovoľuje systémovým programom využívať mnoho nových rysov navrhnutých k zlepšeniu multitaskingu (spracovanie viacerých úkonov naraz) ak lepšiemu ovládaniu aplikačných programov , napr. systém stránkovania , ochrana pamäti a podpora pre virtuálnu pamäť . Chráněný režim dovoluje systémovým programům využívat mnoho nových rysů navržených ke zlepšení multitaskingu (zpracování více úkonů najednou) ak lepšímu ovládání aplikačních programů , např. systém stránkování , ochrana paměti a podpora pro virtuální paměť.
Po zapnutí procesoru, který podporuje x86 chráněný režim, se začnou provádět příkazy v reálném režimu, aby se zaručila zpětná kompatibilita se staršími procesory. Chráněný režim může být zaveden až poté, co systémový program nastaví několik deskriptorových tabulek a umožní "Povolení ochrany " bit v Kontrolním registru 0 (CR0).
Kvůli přidaným zlepšení není chráněný režim stal základem pro všechny následující vylepšení na architektuře x86.
Historie
8086, předchůdce 286, byl původně navržen s 20-bitovou paměťovou adresové sběrnicí. Toto dovolovalo procesoru přístup 220 bajtů paměti, ekvivalentní k 1 mebibajtov. V té době byl 1 mebibajt považován za relativně velké množství paměti, a tak návrháři z IBM Personal Computer rezervovali prvních 640 kilobajtů pro aplikace a použití operačního systému a zbylých 384 kilobajtů bylo rezervováno pro základní vstupně-výstupní systém (BIOS) a paměť pro přídavné zařízení.
Jak plynul čas, cena paměti se nepřetržitě klesala a využití se zvětšilo. Omezování 1MB se nakonec stalo významným problémem. Intel zamýšlel rešit tuto limitaci spolu s jinými vydáním 286
286
Prvotní chráněný režim, vydaný s 286, už nebyl velmi používaný. Několik nedostatků, jako neschopnost přístupu k BIOS-u a neschopnost změnit zpět do reálného režimu bez resetování procesoru zabránil širšímu uplatnění. Toto bylo brzděné faktem, že 286 dovolovala přístup k paměti v 16 bitech, 216 bajtů, ekvivalent k 64 kilobajtů, přístupných v čase.
Zpětná kompatibilita s předchůdci 8086 byla udržována tím, že při spuštěn se zahajuje reálný režim. Funkce reálného režimu umožnily starším programem běžet bez zbytečné modifikace na novějších 286. Pro přístup k dodatečným funkcím 286, operační systém nastavoval procesor do chráněného režimu. Toto umožnilo 24 bitovou adresace, která dovolovala procesoru přístup 224 bajtů paměti, tedy 16 megabytů.
386
S vydáním 386 v roce 1985, mnoho problémů zabránilo rozsáhlému přijetí předchozího chráněného režimu.
386 vydali s adresové sběrnicí velikosti 32 bitů, která dovoluje přístup do 232 bajtů paměti, ekvivalent ke 4 gigabajtům. Segmentová velikost byla rovněž zvýšena na 32 bitů, což znamenalo, že 4GB mohly být zpřístupněny bez zbytečného přepínání mezi segmentmi.
Chráněný režim je nyní využíván doslova ve všech moderních operačních systémů, které fungují na x86 architektuře, např. Microsoft Windows, Linux, a mnoho jiných.
S vydáním 386 následující další prvky byly přidány k chráněnému režimu
Stránkování 32-bitový fyzický a virtuální adresového prostoru (32 bitový fyzický adresového prostoru není součást 80386SX a jiných 386 procesorových variant, které používají starší 286 sběrnici.) 32-bitová segmentová část Schopnost přepínání se zpět k reálnému režimu Virtuální 8086 režim
Vstupy a výstupy chráněného režimu
Až do vydání 386, chráněný režim neposkytoval přímou metodu pro vrácení se do reálného režimu jakmile už jednou byl přepnut do chráněného režimu. IBM vytvořilo obkľučku, která zahrnovala rese-tování CPU a ukládání systémových registrů, ukazatel zásobníku a často i masku přerušení v real-time hodinách čipu RAM. Toto dovolovalo BIOS-u navrátit CPU do stejného stavu a začít provádět kód před resetem.
Pro vstup do chráněného režimu, musela být vytvořena globální tabulka deskritporov (GDT) s minimálně třemi záznamy: nulový deskriptor, kódový segmentový deskriptor a datový segmentový deskriptor. 20. adresové řádek (A20 řádek) také musel dovolovat použití všech adresových řádků takže CPU mohl přistupovat za 1MB paměti (pouze prvních 20. bylo povolených použivat až po spuštění Aby byl zaručen kompatibility se starším softwarem). Po provedení těchto dvou kroků, PE bit musel být nastaven v CR0 rejstříku a druhý skok se musel uskutečnit k vyčištění vstupní fronty.
Rysy
Chráněný režim má množství nových znaků navržených ke zlepšení kontroly operačního systému nad aplikačním softwarem, aby zvětšil bezpečnost a stabilitu systému. Tyto bonusy dovolují operačnímu systému fungovat způsobem, který by jinak byl významně těžší nebo dokonce nemožný bez pořádné hardwarové podpory
Privilegované úrovně
V chráněném režimu existují 4 privilegované úrovně nebo prstence, Začínají od 0 po 3, kde prstenec 0 je najprivilegovanejší a 3 nejméně privilegovaný. Používání prstenců dovoluje programovému vybavení omezit úkoly z prístupneních dat, volací brány nebo vykonávat privilegované instrukce.
Ve většině prostředí, operační systémy a některé ovladače zařízení běží v prstenci 0 a aplikace běží v prstenci 3
Aplikační kompatibilita reálného režimu
Z největší části, binární kompatibilita s kódem reálného režimu, schopnost k přístupu až 16 MB fyzické paměti a 1GB virtuální paměti byly největší změny na programových aplikacích. Avšak neprobíhalo to bez limitácií, pokud aplikace využila nebo se spoléhala na některé techniky uvedeny níže nebežala:
Aritmetika segmentu Privilegované instrukce Přímý hardwarový přístup Psaní do části kódu Data provádění Segmenty překrývání Použití bios-ových funkcí, protože bios-ové přerušení patří Intel-uVe skutečnosti téměř všechny DOS aplikační programy porušily tyto pravidla. Kvůli těmto omezením byl vytvořen virtuální 8086 režim a povolen s 386. I přes takový potencionálním překážkám, Windows 3.x a jeho nástupci mohou využívat binární kompatibilitu s reálným režimem při spuštění aplikaci Windows 2.x, Které běžely v reálném režimu ve Windows 2.x.
Virtuální 8086 režim
S vydáním 386, chráněný režim předvedl něco, co manuály Intel-u nazvali virtuální 8086 režim. Virtuální 8086 režim je navržen, aby vydrželo kódu dříve psanému pro 8086 fungovat bez provozních modifikaci a souběžně s jinými úkoly, bez snížení bezpečnosti nebo stability systému. Virtuální 8086 režim není zpětně slučitelný se všemi programy. Programy, které vyžadují manipulaci segmentu, privilegované instrukce, přímý hardwarový přístup nebo používají samomodifikačný kód, Budou vytvářet výjimky a nebudou spustitelné. Navíc, aplikace běžící ve virtuálním 8086 režimu vytvářejí past s použitím instrukcí, které zahrnují vstup / výstup (I / O), který může záporně ovlivnit výkon.
Kvůli těmto omezením mnoho programů původně navržených k běhu na 8086 nemohly běžet ve virtuálním 8086 režimu. Důsledkem čehož byl systémový program nucen buď ke kompromisní sys-témové bezpečnosti nebo k zpětné kompatibilitě, kterou se zabývá softwarové dědictví. Příklad takových kompromisů může být viděn například u Windows NT, Který vyloučil zpětnou kompatibilitu pro mnoho DOS aplikací.
Stránkování
Běžný způsob použití stránkování pro vytvoření prostoru virtuální pamětiPro více detailů navštivte téma Stránkování.
Kromě přidání do virtuálního 8086 režimu, 386 přidal stránkování i ke chráněnému režimu. Navzdory stránkování, systémový program může omezovat a řídit úkolově přístup ke stranám, které jsou součástí paměti. V mnoha operačních systémech, stránkování je používáno k vytvoření nezávislého virtuálního adresového prostoru pro každou úlohu. Toto brání jedné úloze v manipulování paměti jiného úkolu. Stránkování také počítá s odstraňováním stran z primární paměti a k ukládání na pomalejší a větší vedlejší paměť, Jako pevný disk. Architektura x86 dovoluje kontrolu nad stranami přes dvě sady: Adresář strany a tabulky strany.
Původně měl adresář strany velikost jedné strany, 4 KB, a obsahoval 1024 stránkových adresářových záznamů (PDE), i když následující vylepšení architektury x86 přidalo schopnost používat větší velikosti stránky. Každý PDE obsahuje ukazatele k tabulce strany. Tabulka strany rovněž měla původně 4KB a obsahovala 1024 stránkových tabulkových záznamů (PTE). Každý PTE obsahoval ukazatel na skutečnou stránkovou fyzickou adresu a byl použit jen když 4KB strany byly používány. V daném okamžiku může být jen jeden adresář strany v aktivním využívání.[
Multitasking
Od použití prstenců, privilegované volací brány a segmentu na uložení stavu úkoly (TSS), představených spolu s 286, preemptive multitasking byl vyvíjen na architektuře x86. TSS dovoluje uni-verzálnym rejstříkem, segmentovým selektorovým polím a řadou modifikaci bez ovlivňování dalších úkolů. TSS také dovoluje úkoly privilegovaných úrovni a I / O portu být nezávislý na další úkolech.
V mnoha operačních systémech nejsou použity plné rysy TSS. Jako výsledek mnoho operačních systémů používá jako hardware tak i software na vybudování multitaskingového systému.
Operační systémy
Operační systémy jako OS / 2 1.x se pokoušejí přepínat procesor mezi chráněnými a skutečnými režimy. Obojí je pomalé a nebezpečné, protože program reálného režimu může rychle spadnout. OS / 2 1.x definuje omezující programovací pravidla dovolením Rodiny API nebo velkým skokem. Tím pádem program může běžet buď v reálném nebo chráněném režimu.
Některé dřívější Unix operační systémy, OS / 2 1.x a Windows používali tento režim. Windows 3.0 byl schopen spouštět v reálném režimu programy v 16bitovém chráněném režimu. Windows 3.0, Když přepíná na chráněný režim, udržuje jedinou privilegovanou úroveň modelu, který byl používán v reálném režimu, který je důvodem proč windowskou aplikace a dlls mohou zahákne přerušení a udělat přímý hardwarový přístup. To trvalo až po Windows 9x sérii. Pokud je Windows 1.x nebo 2.x program psaný vhodně a vyhýbá se aritmetickému segmentu, bude fungovat stejně v obou režimech. Windows programy se obecně vyhýbají aritmetickému segmentu, protože Windows implementuje software virtuální paměťové schémata, pohyblivý kód programu a dat v paměti, když programy neběží, takže manipulace absolutní adresy je nebezpečná; programy by se měly pouze přidržovat kliky k blokům paměti, když neběží. Spouštění starého programu dokud Windows 3.0 běží je ošetřeno v chráněných režimech spuštěním upozornění, navrhne buď bežanie Windows v reálném režimu nebo aktualizaci na novou verzi aplikace. Není možné aby některé GUI programy běžely v 16-ti bitovém chráněném režimu a jiný GUI program běžel v reálném režimu. Ve Windows 3.1 reálný režim zmizel.
Dnes, 16-ti bitový chráněný režim je ještě využíván pro bežanie dědičných aplikací, Např. DPMI kompatibilní s DOS rozšiřovacího programy (přes virtuální DOS stroje) Nebo Windows 3.x aplikace (přes Windows na Windows podsystém) a jisté třídy ovladačů zařízení v OS / 2 2.0 a pozdější, všechny pod kontrolou 32 bitového jádra.
Reálný režim
Reálný režim, také volal skutečný adresový režim, je způsob práce 80286 a pozdnější x86-slučitelná CPU. Reálný režim je charakterizován 20 bitové rozdělené paměti osloví prostor, přímý softwarový přístup k biosovým rutinám a hardwaru periférie a žádnou představu o ochraně paměti nebo multitaskingu na hardwarové úrovni. Všichni x86 procesory v 80286 sériích a pozdnější začátek v reálném režimu u síly-na; 80186 CPU a dříve měl jen jeden operační režim, který je ekvivalentní k reálnému režimu v pozdnějších čipech.
Historie
286 architektury představilo chráněný režim, počítat s (kromě jiného) hardware-úrovňová ochrana paměti. Používat tyto nové rysy vyžadovalo nový operační systém, který byl specificky určen pro to. Od primární designové specifikace mikroprocesorů x86 je to oni jsou úplně zpět slučitelní se softwarem psaným pro všechny čipy x86 před nimi, 286 čipu bylo děláno k začátku v ' reálný režim ' — to je, v režimu který sešel z nových pamětových ochranných rysů, tak že to mohlo provozovat operační systémy psaný pro 8086 a 80186. K tomuto dni dokonce i nejnovějším x86 CPU (včetně x86 _ 64 CPU) začátek v reálném režimu u síly-na, a může provozovaný software psaný pro nějaký předchozí čip. DOS operační systémy (MS-DOS, DR-DOS, etc.) pracovat v reálném režimu. Brzy verze Microsoft Windows vpustily reálný režim, až do Windows 386, který vpustil chráněný režim a více úplně pochopená Windows 3.0, který mohl vpustit jeden skutečný nebo chráněný režim. Windows 3.0 mohl vlastně vběhnout dva “příchuti” chráněného režimu - “standardní režim”, který běžel používat chráněný režim, a “386-zlepšil režim”, který je virtualized verze standardního režimu a tak by nepokračoval dál 286. Windows 3.1 odstranil podporu pro režim Reala, a to bylo první tradiční provozní podmínky, které vyžadovaly přinejmenším 80286 procesoru. Téměř všechny moderní x86 operační systémy (unix, linux, OS/2, Mac OS, Windows 95 a pozdnější, etc.) měnit procesor do chráněného režimu u startu.
Zdroje:
http://sk.wikipedia.org/wiki/Chr%C3%A1nen%C3%BD_re%C5%BEim
http://wikipedia.infostar.cz/r/re/real_mode.html
--Jakub Charvát 11. 6. 2010, 08:24 (UTC)