MMURadim Ballner
Brána k opravdovému multitaskingu .... Mnohým z vás se již jistě stalo, že se při spuštění nějakého programu Amiga
zhroutila a celý systém rebootoval. Mnoho z vás si také jistě položilo otázky
typu: Proč spadl celý systém? Proč nebyl odstraněn jen špatný program, který
způsobil toto zhroucení? Tento článek se vám pokusí alespoň částečně odpovědět
na tyto a podobné otázky.
Operační systém se zhroutí většinou proto, že byla přepsána nějaká "životně"
důležitá systémová data, která jsou nepostradatelná pro jeho správný běh. Tato
kolize může celkem snadno nastat, protože programy i operační systém mají paměť
společnou. To znamená, že program může zapisovat do paměti, kde pracuje operační
systém a má uložena svá data. Zkuste například v nějakém assembleru nebo editoru
paměti přepsat adresu $4 - systém se zhroutí, protože na této adrese je uložen
odkaz na nejdůležitější adresu t.j. na EXEC_BASE. MMU to vyřeší
Jak se dá zařídit, aby se toto nestávalo a programy nemohly měnit systému
data "přímo pod rukama"? Řešení samozřejmě existuje, jmenuje se MMU (Memory
Management Unit - jednotka řízení paměti). Jedná se o součástku, která je
umístněna mezi mikroprocesorem a paměťovými obvody. Většinou je umístněna přímo
v mikroprocesoru (Motorola 68030, 68040, 68060), ovšem existují i EC verze (typy
např. 68EC030, u kterých je MMU nefunkční; pro 68020 standardní Amigy - se
dodávají obvody 68551). Jejími úkoly jsou ochrana paměti a V/V zařízení a
virtualizace paměti.
Teď nahlédneme trochu pod pokličku a podíváme se, jak to funguje. Mikroprocesor
68030 je 32-bitový a program může použít libovolnou 32 bitovou adresu (tj.
adresa od 0 do 4294967295)). Chce-li mikroprocesor (náš program) něco přečíst z
paměti pošle tuto 32-bitovou adresu MMU, ta ji přeloží a podle ní se teprve
vyberou data z paměti. Z toho vyplývá, že adresa použitá v programu se může
lišit od adresy, kterou zpracuje paměť. Pro přehlednost se zavádí pojmy logická
a fyzická adresa. Logická adresa je adresa, kterou jsme použili v programu a
fyzická adresa je adresa, kterou dostanou paměťové obvody. Stránkování paměti
Nyní k tomu, jak se provádí překlad adres. Je to celkem prosté. Celý
adresový prostor (to jest celá oblast, kterou může mikroprocesor adresovat, a
která nezávisí na tom, kolik máme právě teď nainstalované paměti v počítači) je
rozdělen na úseky stejné velikostí - logické stránky. Na úseky stejné velikostí
si také rozdělíme operační pomět (toto je již paměť, kterou máme skutečně v
počítači k dispozici - standardní A1200 má 2 MByty). Těmto úsekům se říká
fyzické stránky. MMU je pak schopna přiřadit jakékoliv logické stránce
jakoukoliv stránku fyzickou. Přiřazení se uskutečňuje pomocí tabulky
(deskriptoru), ve které je pro každou logickou stránku jedna položka (obsahuje
číslo fyzické stránky nebo informaci o tom, že tato logická stránka nemá žádnou
fyzickou stránku). Ve skutečnosti je to ještě trošku složitější, např. u 68030
je tabulka stránek dále stránkována (protože 68030 může adresovat virtuálně až 4
GByty), jinak by byla tato tabulka stránek příliš velká. Ochrana paměti
Aby bylo možné paměť chránit, tak stránky navíc obsahují pro každou stránku
atributy, které informují o tom, jak se daná stránka chová. Mezi ně patří např.
atribut "supervisor" a "read-only". K vysvětlení atributu supervisor je nutno
nejprve objasnit, co znamená práce mikroprocesoru v módu supervisor.
Mikroprocesory 680x0 pracují ve dvou režimech a to supervisor-mode a user-mode.
V režimu supervisor (=dohlížitel) je mikroprocesoru dovoleno udělat "cokoliv"
(ovládat MMU, cache ...; v tomto režimu pracuje operační systém). Naproti tomu v
režimu user-mode (uživatelský mód) má mikroprocesor různá omezení (v tomto
režimu by měly pracovat všechny spuštěné aplikace) nesmí se používat
privilegované instrukce (např. pro řízení MMU).
Takže zpět k MMU. Pokusí-li se program pracovat s nějakou stránkou, dojde
nejdříve k ověření, zda-li má na to právo. To znamená: program nemůže zapisovat
do paměti označené "read-only" (ale může z ní číst) a nemůže pracovat s pamětí
označenou "supervisor", pokud není právě v supervisor módu. Pokud se o toto
pokusí, dojde k vyvolání výjimky (a záleží na systému, jakým způsobem
zareaguje).
Jiný způsob jak chránit pomět proti manipulaci lze tím, že k ní programu
znemožníme přístup (uděláme tabulku pro popis stránek tak, aby fyzické stránky
které chceme chránit zůstaly pro danou aplikaci nevyužity nepřiřadíme jim
logické stránky). Virtuální paměť
Další důležitou funkcí MMU je virtualizace paměti (Virtual Memory VM) a
adres. Co to znamená? Pomocí relativně rychlého média (hard disku) a MMU lze
nasimulovat více paměti. Dělá se to tak, že data (nebo program, který není
zrovna aktivní) se uloží na médium a zapamatují se jejich logické stránky
(adresa), tím může být fyzická stránka (či stránky) uvolněna a přiřazena jiné
logické stránce. Dojde-li k přístupu na data, která nejsou zrovna v paměti,
vyvolá se výjimka a obslužná rutina by měla nahrát data do volné paměti a
přiřadit této fyzické paměti logické adresy (právě ty, které si zapamatovala).
Pokud není volné místo v paměti, musí se uvolnit fyzická paměť (stránky, které
se v poslední době nepoužívaly nahrát znovu na hard disk - celý proces se
opakuje). Je jasné, že důležité úseky pro systém a rutiny pro ovládání
virtualizace se nemohou z paměti odstraňovat. AmigaOS nepodporuje MMU
Operační systém Amigy, ani ve verzi 3.0 či 3.1, neumožňuje používat MMU a
proto dochází k situacím popsaným v úvodu tohoto článku. Existují však
sharewarové i komerční programy, které dokáží využít u mikroprocesorů s MMU
jejich předností, především virtualizace. Takto lze na dostatečně velkém
harddisku nasimulovat třeba gigabyte paměti . Použití VM
Jestliže máte počítač s procesorem MC68030, 040 či 060 vybaveným MMU
jednotkou a dostatek volného místa na rychlém harddisku, potřebujete již jen
software. Existuje několik shareware, ale i čistě komerčních programů. Mezi
nejpoužívanější patří Gigamem (dodává se standardně s SCSI řadičem Oktagon) a
VMM (vyžaduje 040).
Nenechte se poněkud zmást předcházejícími odstavci, ale pro rozumné využívání
"virtuální paměti" potřebujete ještě něco: volnou paměť. VM se v praxi využívá
zejména v případech, kde se pracuje s obrovskými soubory, které nemusí být
přístupné naráz. Všechny programy samozřejmě pracují na obdobném principu, ale
každý jinak efektivně. Obecně platí, že před spuštěním vlastního programu, který
má spravovat VM, se musí provést jistá nastavení. Uživatel si zvolí maximální
velikost pro virtuální paměť na disku, ale také velikost vyrovnávací paměti (ta
představuje hranice, při jejímž překročení budou data již ukládána virtuálně na
disk). Praktický pohled
Snad ani nemusím nikterak zdůrazňovat, že pro praktické využití je
výhodnější mít tuto vyrovnávací paměť (jakýsi buffer VM) co možná největší. To
dále souvisí s celkovými možnostmi virtuální paměti. VM skutečně není náhrada za
normální Fast RAM, ale je pouze jakýmsi doplňkem pro toho, kdo potřebuje
zpracovávat nadprůměrně velké soubory. Pod pojmem "rozumné využití" musíte
chápat asi to, že budete provozovat VM na přijatelné konfiguraci. Pokud máte
pouze 2 MB RAM, tak raději nad VM ani nepřemýšlejte. Doporučil bych minimální
fyzickou pomět alespoň 4 raději však 8 MB a pro skutečně vážné používání dokonce
16 MB RAM. Potom si totiž můžete označit dostatečně velkou vyrovnávací paměť a
vlastní práce je mnohem příjemnější a hlavně rychlejší. VM je ideální zejména
při zpracovávání velkých obrázků či animací v některém z grafických programů.
Méně výhodné je již využívat VM k tomu, aby jste mohli mít spuštěno hned několik
rozsáhlých programů.
Některé z těchto náročnějších, povětšinou grafických, programů však dokáží již
sami spravovat virtuální paměť, mnohdy ani nevyžadují MMU jednotku (protože se
starají pouze o svá data). Mezi ně patří i 24-bitový image processing program
ImageFX, kde lze v preferencích nastavit vlastní správu VM. Potom můžete v
programu editovat obrázek o velikostí 8 MB, přestože máte třeba 2 MB Chip a 4 MB
Fast RAM. Ovšem na úkor mnohonásobného zpomalení práce. Nedoporučuji ovšem
kombinovat několik metod! A proto, pokud nějaký program interně podporuje VM,
upřednostněte ji, ale nespouštějte žádného dalšího správce VM (Gigamem, VMM
atd.). VM, ano či ne?
Uživatel nemůže předpokládat, že s 2 MB pomalé Chip RAM si vytvoříte na
harddisku 20 MB virtuální paměti, a budete moci spustit paměťově náročný program
jako třeba LightWave, který sám o sobě zabírá mnohem více, či editovat 15 MB
velký obrázek. Přesto je VM v mnoha případech téměř ideální a hlavně cenově
přijatelné řešení. Při používání VM si musíte zapamatovat několik zásad:
1) VM není žádná náhrada za Fast RAM.
2) Práce ve VM je mnohonásobně pomalejší a harddisk je více zatěžován.
3) Označit rozumně velkou vyrovnávací pomět.
4) Nekombinovat několik metod správy VM různými programy.
5) Nespouštět zbytečně mnoho programů, ale raději pouze jeden, ve kterém bude
zpracováván rozsáhlý soubor. Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|