Narsil č. 39

Outside

↑
Narsil OUTSIDE – obrázek 1

Pokud vám tento titulek připadá poněkud zmatený, pak vězte, že je takto nazván zcela záměrně. V tomto článku totiž bude řeč o skvělém programu pro správu virtuální paměti, programu OUTSIDE.

Nejdříve trocha teorie. Standardní Atari ST a STe disponují z valné části 1 MB RAM, povětšinou pak rozšířené na 4 MB (označované ST-RAM), což je za normálních podmínek hranice. Existují sice možnosti rozšíření paměti na více MB, ale to je řešeno přes různé přídavné karty. Bez větších investicí tedy není další rozšíření paměti v podstatě možné. Daleko lépe jsou na tom modely TT a Falcon. TT-čko také jako první přišlo s novou filosofií - rozdělení paměti na ST-RAM a TT-RAM, někdy také pro její vyšší rychlost zvanou Fast-RAM. Do této RAMky má přístup pouze CPU, žádný jiný čip a tak hlavní procesor nic nezdržuje, kdežto do ST-RAM mají přístup kdejaké periférie počítače. ST-RAM je navíc na rozdíl od Fast-RAM velikostně omezena (4 MB na ST/STe, 10 MB na TT, 14 MB na F030). Omezení Fast-RAM spočívá pouze v tom, že do ní nelze umístit VideoRAM (ta je vždy součástí hlavní paměti, případně se může nacházet na grafické kartě) a také si z ní nelze např. přehrávat samply. TT-čko mohlo díky této filosofii (a přídavným kartám) využít až 64 MB RAM. Falcon oproti tomu ustrnul na základních 4 MB ST-RAM s tím, že se počítalo i s kartami na 16 MB RAM, z nichž použitelných je 14 MB, čímž může mít Falcon standardně maximálně 14 MB RAM, více pouze s různými přídavnými kartami. Fast-RAM o různé velikosti je také často součástí různých urychlovačů (AfterBurner040, CENturbo). Tudíž jak vidno, rozšíření paměti není ani lehkou, ani levnou záležitostí. A právě zde přichází na pomoc OUTSIDE.

OUTSIDE využívá speciálních vlastností procesoru Motorola MC68030 (jenž je součástí TT, Falcona a karty PAK 68/3 pro ST/STe), přesněji řečeno jedné jeho součásti - PMMU. Právě ta se stará krom jiných geniálních věcí o virtualizaci paměťového prostoru, což je nutná podmínka pro implementaci virtuální paměti. Na ostatních modelech Atari tedy nelze OUTSIDE použít. Co tedy potřebujeme chceme-li pracovat s virtuální pamětí? Počítač Atari s procesorem MC68030, nějaký rychlejší harddisk a program OUTSIDE.

Autorem tohoto geniální softu je dobře známý Uwe Seimet. Až donedávna byl OUTSIDE sharewarem (kdy nezaregistrovaná verze dovolovala přidat pouze 2 MB RAM), to se ovšem změnilo na jaře tohoto roku, kdy Uwe ukončil další vývoj OUTSIDE a dal program včetně zdrojových souborů a textů volně k dispozici jako freeware. Poslední verzí je tedy verze 3.51, ke které jsem navíc nedávno dokončil překlad původních německých textů do češtiny, takže dnes je OUTSIDE 3.51 volně k dipozici také s kompletně českou dokumentací. Na internetu tento program najdete na mojich www stránkách

http://www.geocities.com/nova_domus

Jak tedy OUTSIDE pracuje? Správa virtuální paměti spočívá v použití jedné partition harddisku jako dalšího paměťového prostoru pro rozšíření paměti RAM. Jednu partition na harddisku tedy znepřístupní pro zápis a využívá ji pro virutální RAM. K tomuto však musí ubrat kus alternativní RAM. Pokud váš počítač zrovna žádnou alternativní RAM (Fast-RAM) nemá, není nic ztraceno. OUTSIDE umí trikem přeměnit část ST-RAM do alternativní RAM, kterou poté rozšiřuje na požadovanou velikost virtuální RAM. Nejlépe je to předvést na příkladě:

Mám tedy Falcona se 4 MB ST-RAM. Určím si na svém harddisku např. partition E:, která má 250 MB volného místa, jako swap partition, tedy tu část disku, kterou bude OUTSIDE používat pro emulaci virtuální paměti. Nyní přeměním 3 MB ST-RAM do alternativní RAM. Volná kapacita mojí swap partition činí 250 MB a tudíž mi pod OUTSIDE zůstává k dispozici ještě 1 MB ST kompatibilní RAM a 250 MB TT-kompatibilní RAM (TT-RAM, Fast-RAM). Z těchto 250 MB se 247 MB nachází na harddisku a 3 MB v hlavní paměti (přeměněné ST-RAM). Přeměním-li pouze 1 MB alternativní RAM, budou k dispozici ještě 3 MB ST-kompatibilní RAM. Z 250 MB virtuální paměti bude 249 MB na harddisku a pouze 1 MB v hlavní paměti. Čím méně virtuální paměti je realizováno v hlavní paměti počítače, a čím více je jí tedy na harddisku, tím častěji musí být data přenášena mezi pamětí a harddiskem, což přirozeně na rychlosti virtuální paměti nepřidá. Proto je dobré nechat přeměnit tolik ST-RAM na alternativní RAM, kolik je jen možné. Pokud však disponujeme pouze 4 MB ST-RAM, musíme nechat volných (nepřeměněných) alespoň 1 MB RAM, lépe však 2 MB, zvláště hodláme-li na Falconu pracovat i ve vyšších rozlišeních. VideoRAM musí být totiž stále v ST-RAM.

Pokud však již nějakou alternativní pamětí disponujeme, je vše o něco veselejší. Není třeba ubírat a přeměňovat žádnou ST-RAM.

V praxi to vypadá tak, že počítač spokojeně hlásí plno paměti RAM, jen práce je trochu zpomalena přesouváním dat z a na harddisk. Z toho důvodu se doporučuje používat co nejrychlejší harddisk (a také třeba urychlený stroj), čímž se tyto prodlevy zkracují.

Všechno toto lze OUTSIDE nastavit v pěkném konfiguračním programu. V něm se zadává, kterou partition použít pro virtuální paměť, kolik převést ST-RAM na alternativní RAM, kolik vytvořit celkem virtuální RAM atp. S OUTSIDE je možno vytvořit max. 496 MB RAM, což musí postačovat snad každému. Navíc lze OUTSIDE nastavit na tzv. kompatibilní mód, který je zde pro potřeby vyšší kompatibility se staršími programy. Ne všechny jsou totiž napsány systémově čistě a nezvládají 32 bitové adresování. Projevují se dvěmi bombami (Bus error) po spuštění. Kompatibilní mód OUTSIDE právě umožňuje i přes toto omezení část takových programů ve spojení s virtuální pamětí používat. OUTSIDE totiž uloží virtuální paměť nikoliv do paměťového prostoru, ve kterém se alternativní paměť normálně nachází, nýbrž do dolních 16 MB hlavní paměti. Zde se jedná o adresový prostor, který je k dipozici pro všechna Atari ST. Současně je adresace omezena jako u ST při 16 MB na 24 bitů. Celkem lze sice takto realizovat pouze 14 MB virtuální paměti, ale kompatibilita směrem k ST se jasně zvýší.

Kromě těchto "zlobivých" programů však existují i takové, které musí běžet v ST-RAM. Takové případy řeší OUTSIDE tím, že název těchto programů uživatel vypíše do souboru OUTSIDE.INF nacházejícího se v hlavním adresáři root disku. OUTSIDE pak tyto programy nepustí do virtuální RAM. To je třeba případ Calamu.

Jak již bylo řečeno, lze v principu virtuálně pracovat pouze s alternativní pamětí (a ne s ST-kompatibilní RAM). Aby tedy co nejvíce programů mohlo těžit z takto rozšířené paměti, musí tyto programy přirozeně také ve virtuální paměti běžet, nebo ji přinejmenším používat pro některé své části (např. pracovat v ní se svými daty). Toto nelze provést zcela automaticky, nýbrž to musí být pro každý program nastaveno. K tomu slouží známé flagy v hlavičkách programů. Součástí balíku OUTSIDE je i program OUTCONF, který právě tato nastavení umožňuje. Jedná se zde o tři druhy voleb:

Prvním je nastavení tzv. "Fast-Load-Flag". Tyto informace umí využít všechny verze TOSů od verze 1.04 (včetně) a slouží pro rychlejší start programu. Při takto nastaveném bitu nebude hlavní paměť při startu programu zcela vymazána. Čas potřebný pro start programu se tím zřetelně zkrátí. Máme-li virtuální paměť, rozhodně je lepší tento bit nastavit, čímž se během startu programu vyhneme zbytečně mnoha přístupům na disk.

Další dva se týkají již přímo využívání alternativní RAM. Jde o volby "Program běží v alternativní RAM" a "Paměť z alternativní RAM" (anglicky "Load to & Malloc from TT-RAM"). První z nich slouží k nastavení, zda se má daný program nahrát do alternativní RAM a tím vlastně využít obrovský prostor paměti pro sebe. Nezávisle na této volbě lze ještě nastavit, aby tuto paměť využívala jeho data. Nastaveny mohou být všechny kombinace nezávisle na sobě. Existují však programy, které v alternativní paměti neumějí běžet a nesmí tedy do ní být nahrávány, stejně jako na druhou stranu do této paměti nelze umístit některá programová data. Závisí to většinou na daném programu. V manuálu k OUTSIDE je několik těchto programů zmíněno, nejedná se však o nijaký rozsáhlý problém.

Je zde však ještě další věc, jež se týká používání PMMU. OUTSIDE se totiž nemůže nainstalovat, pokud již nějaký program PMMU používá. Stejně tak je-li již instalován OUTSIDE, nelze spustit další program, který by chtěl také využívat PMMU. To by bylo možné pouze za předpokladu, že tento program umí přečíst obsah cookie "PMMU", které OUTSIDE vytváří a umí obhospodařovat, a podle tohoto obsahu se daný program zařídí, případně se nenainstaluje. Tak to činí OUTSIDE, zjistí-li PMMU obsazenu jiným programem.

OUTSIDE pracuje spolehlivě pod single TOSem a s úspěchem jej používám i pod MagiCem 6.0, kde netropí žádné problémy. Horší je to s MiNTem. OUTSIDE lze provozovat pod MiNTem od verze MiNTu 1.05 (včetně). Bohužel spolupráci s dalšími verzemi Uwe nezaručuje s tím, že nikde přesně není udáno, jak MiNT používá PMMU. Každopádně však musí být vypnuta ochrana paměti, tedy přejmenován MINT.PRG na MINTNP.PRG. Také nelze spouštět OUTSIDE z AUTO adresáře, ale příkazem jako "exec c:\outside.prg" v souboru MINT.CNF. Ovšem vývoj MiNTu šel poměrně rychle kupředu a od verze 1.14.x umí MiNT také simulovat virtuální paměť, čímž by OUTSIDE již nebyla potřeba. Osobně jsem zkoušel OUTSIDE pod FreeMiNTem 1.15.5 a 1.15.9b a nešlo to. Jelikož však nejsem na MiNT odborník, možná by se to dalo určitými nastaveními zprovoznit.

OUTSIDE je však perfektní kus software, který všem šťastlivcům s MC68030 umožňuje pracovat s tak velkou pamětí RAM, kterou nelze jinak získat (a už vůbec ne zaplatit).

Neznámý vojín