AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Kniha návštev     Amiga na PC     Amiga Forever  

MMU

Radim 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


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )