Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Virtuální paměť a odebírání stránek
21. listopadu 2002, 00.00 | V minulém dílu našeho seriálu jsme si ukázali, jak systém virtuální paměti zajistí, aby bylo ve skutečnosti k dispozici vlastně neomezené množství paměti: kdykoli je zapotřebí nová stránka, ale fyzická paměť už je kompletně "vypotřebovaná", prostě odebere stránku někomu jinému, uloží její obsah na disk, a použije ji. Až bude příště s pamětí chtít pracovat "někdo jiný", obsah stránky z disku zase obnoví.
V minulém dílu našeho seriálu jsme si ukázali, jak systém virtuální paměti zajistí, aby bylo ve skutečnosti k dispozici vlastně neomezené množství paměti: kdykoli je zapotřebí nová stránka, ale fyzická paměť už je kompletně "vypotřebovaná", prostě odebere stránku někomu jinému, uloží její obsah na disk, a použije ji. Až bude příště s pamětí chtít pracovat "někdo jiný", obsah stránky z disku zase obnoví.
Efektivita
Je celkem zřejmé, že zatímco samotné přidělování stránek je velmi rychlé — koneckonců jde jen o úpravy tabulek v paměti — ukládání na disk a zpětné načítání už nějakou chvíli trvá. Proto je důležité, aby se odebíraly ty stránky, se kterými hnedtak zase nikdo nebude pracovat.
Správce paměti se proto snaží odhadnout, kterou stránku nejspíš nikdo nebude v nejbližší době potřebovat. Většina operačních systémů — včetně Mac OS X — s trochou zjednodušení prostě vybírá stránky, na které už hodně dlouho nikdo nesáhl: u takových je skutečně poměrně malá pravděpodobnost, že je opět budeme v nejbližší době potřebovat.
Stojí ovšem za to si uvědomit, že jde pořád jen o odhad, a že skutečnost může být jiná: ačkoli je to krajně nepravděpodobné, v praxi můžeme mít tu smůlu, že zrovna odebraná stránka bude v nejbližším okamžiku zapotřebí, a systém bude hned zase muset swapovat, tj. ukládat stránky paměti na disk a načítat je z disku. Jakmile dojde k odebírání stránek, je proto možné efektivitu systému jen statisticky odhadovat.
Není to nevýhoda virtuální paměti?
Na první pohled by se mohlo zdát, že tato "nejistota", zda proces poběží "rychle" nebo "pomalu" je určitou nevýhodou virtuální paměti. Ve skutečnosti tomu tak ale není: je třeba znovu zdůraznit, že k tomu dojde jen s malou pravděpodobností, a hlavně teprve tehdy, až se stránky začnou odebírat. Jinými slovy, až poté, co se všechna fyzická paměť vyčerpá. Ještě jinak, teprve ve chvíli, kdy by systém bez virtuální paměti už přestal pracovat vůbec.
U systému bez virtuální paměti tedy množství instalované (reálné) paměti rozhoduje o tom, co si vůbec můžeme dovolit: máme-li málo paměti, některé aplikace vůbec nespustíme, nebo jich alespoň nemůže běžet víc najednou. S virtuální pamětí je tomu jinak: bez ohledu na množství paměti můžeme všechno, ale paměť rozhoduje o rychlosti. Čím je jí méně, tím více je třeba swapovat — a tím je samozřejmě celý systém pomalejší.
Nepoužívané aplikace chleba nejedí...
Další významný rozdíl, který stojí za samostatnou zmínku, se týká běžících, ale momentálně nepoužívaných aplikací. V systému bez virtuální paměti nám tyto aplikace ubíraly paměť, a proto bylo třeba je důsledně ukončovat. S virtuální pamětí to zapotřebí není: jestliže nějakou aplikaci nepoužíváme, aplikace — ačkoli spuštěná — nic nedělá. Nepracuje tedy také s pamětí, a proto správce paměti postupně všechny její paměťové stránky odebere a přidělí někomu jinému. Jistě, zabere to dočasně nějaké místo na disku; při dnešních kapacitách disků to ale vůbec nehraje roli. S virtuální pamětí si proto můžeme klidně dovolit mít zároveň spuštěných mnoho desítek aplikací, aniž by to přinášelo jakékoli problémy.
Samozřejmě, všude je nějaké ale — v tomto případě jde o mimořádně mizerně napsané aplikace, které namísto čekání na další událost (stisknutí klávesy apod.) neustále v programovém cyklu samy ověřují, zda k události došlo nebo ne (tomuto příšernému nešvaru se odborně říká "polling"). Pak samozřejmě aplikace pořád "něco dělá", a její stránky buď nejsou k dispozici vůbec, nebo — což je ještě horší — se každou chvilku swapují tam a zase zpátky. U aplikací, psaných přímo pro Mac OS X, to prakticky nehrozí; může to však nastat u aplikací přenesených z jiných prostředí.