Otázka: Chráněný režim
Předmět: Elektronické počítače – Informatika
Přidal(a): Honzas
Chráněny režim
– Podstata a princip ochrany +
– Tvorba fyzické adresy v reálném a chráněném režimu +
- Logická adresa seg:offs + – Selektory a deskriptory + – Tabulky deskriptorů +
– Účel, formáty a druhy deskriptorů a bran +
Důvod zavedení ochrany
Umožňuje zavést do OP více programů, každý má vlastní chráněný prostor dělený na segmenty.
Umožňuje přenášet programy mezi počítači.
Rozděluje programy podle důležitosti na aplikace a programy OS včetně podpor.Tyto programy mají chráněné své hranice před vniknutím cizích dat a sowftwearů a před neoprávněným spuštěním.
Tvorba fyzické adresy v reálném režimu
Program je uložen v segmentech s pevnou velikostí 64KB a s určením použití- kódový segment, datový segment, zásobníkový segment (hlavně na návratové adresy).
Programátor pracuje s logickou adresou- bázy segmentu určí např.: OS,offset v segmentu určuje programátor např.: sledem instrukcí, deklarací polí, řetězců, dat
– fyzická adresa se spočítá v procesoru z logické adresy (Seg : Offs = např. DS : 1234H )
– vezme se segmentová část adresy, která se vynásobí 10H a přičte se k ní offsetová část FA = Seg * 10H + Offs
-Adresa FA má kapacitu 16 segmentů po 64KB – 1MB
Tvorba fyzické adresy v chráněném režimu
– při multitaskingu běží více úloh najednou, přičemž se nesmí navzájem poškodit (zneužít) údaj v OP – chráněný režim chrání paměfové prostory jednotlivých úloh tak, že nedovolí cizí úloze vstoupit do jejího prostoru
– logická adresa (LA) se skládá ze segmentové a offsetové části, přičemž segmentová část má význam viditelné (selektorové) části. Segmentová – Selektorová část umožňuje přístup k 8192 (8K) segmentům, které jsou maximálně velké 64KB (16b systém) nebo 4GB (32b systém). Možná velikost virtuální paměti daná LA je 1GB (16b systém).
– fyzická adresa (FA) se zpracuje z LA získáním deskriptoru segmentu a offsetu z programu
Každý ze segmentů v jednotlivých PL má chráněné hranice a přístup a musí je mít popsané deskriptorem. Každý program má deskriptory uložené ve vlastní Lokální tabulce deskriptorů(LDT) , leží jako systémový segment v OP .
Př.:
- Program A: 54 deskriptorů
- Program B: 624 deskriptorů
Důležité programy z oblasti OS a podpor aplikací mají svou Globální tabulku deskriptorů(GDT), leží jako systémový segment v OP.
– segmentové registry (DS, ES, CS, SS) obsahují selektor (ukazatel), který ukazuje do tabulky deskriptorů
– selektor má viditelnou a neviditelnou část
Viditelná část selektoru:
– je tvořena z 16b, poslední 3 b jsou TI a PL (Požadovaná PL)
Obsahuje:
TI (Table Indikator): určuje, zda procesor bude vybírat deskriptor z GDT [O], nebo LDT[1]
Neviditelná část selektoru (pro 16b systém) :
– je část selektoru, do které se nahraje vybraný deskriptor z tabulky GDT nebo LDT, v této části jsou tyto složky PP( přístupová práva – 8b), báze segmentu (24b) a limit segmentu (16b) + rezerva.
– do neviditelné části selektoru se nahraje jiný deskriptor pouze, pokud se změní obsah v CS,DS…
Fyzická adresa FA = báze segmentu + offset segmentu, velikost OP dosahuje 16MB ( pro 16b offset)
Deskriptor:
– začátek GDT nebo LDT určuje speciální registr procesoru z jednotky AU GDTR (GDT registr) a LDTR (LDT registr) [obsahují počáteční adresu]
– obsah LDTR se změní vždy, když se změní úloha, u GDTR zůstává obsah stejný
– deskriptor v sobě obsahuje:
PP (přístupová práva)
B (Báze — začátek segmentu)
L (limit — velikost segmentu, Offs ho nesmí překročit)
– procesor provede kontrolu, jestli je Offs < Limit (platí = OK, neplatí = výjimka)
– FA (fyzická adresa) = báze (z deskriptoru) + offs(z instrukce = DS:51= seg:offs)
– také existuje IDT (Interupt Deskriptor Table): tabulka přerušení, obsahuje pouze B a L
Přístupová práva deskriptoru (PP) [8b]:
– P (present): určuje, jestli je deskriptor přítomný v OP
– přístup do segmentu je povolen, když PL má správnou hodnotu
-> numericky PL čím menší číslo, tím větší důležitost (oprávnění) (00 – největší oprávnění]
– typ deskriptoru (10- datový, 11 – instrukční, 01 a 00- systémový) [2b]
– poslední 3 bity určují jak se bude s obsahem segmentu pracovat, např.:
A – Accessed (přistoupeno): zjistí, který segment se používá často
R – Readable: pokud R = 1 (smí se z něj číst), R = O (nesmí se z něj číst)
ED – Expand Data (rozšíří velikost segmentu dat nebo zásobníku o několik B)
Atd…
Brány (16b systém)
– aby mohl program s nižší úrovní PL použít programy ze segmentů s vyšší úrovní PL, musí použít bránu (např. aby mohly úlohy používat ovladače)
– brány připravuje OS a jejich prostřednictvím poskytuje služby ostatním aplikacím
-brány mají velikost jako deskriptor a mohou jsou umístěné v tabulce deskriptorů (LDT,IDT…)
– brána je spojkou mezi segmenty s různými úrovněmi a má tyto složky:
PP – 8b, (nový) selektor -16b do GDT, IDT,LDT…,počáteční Offset – 16b v novém segmentu – vstupní bod např.: do podprogramu + rezerva.
-po kontrole PP v procesoru se použije selektor ke konečnému vyhledání deskriptoru segmentu s kódem, který má začátek určený počátečním offsetem…
– dále máme brány pro přepínání procesů (TSS) a brány pro přerušení (IDT)