A ještě jednou virtuální paměť - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

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:

Seriály

Více seriálů



Mac OS X CZ

A ještě jednou virtuální paměť

14. listopadu 2002, 00.00 | Minule jsme si vysvětlili základy virtuální paměti: ukázali jsme si, že kterýkoli proces může volně pracovat s kteroukoli adresou v adresovém prostoru, a správce paměti mu automaticky přidělí "kus" skutečné paměti, který bude prostřednictvím dané adresy dosažitelný. Co když však fyzická paměť dojde?

Minule jsme si vysvětlili základy virtuální paměti: ukázali jsme si, že kterýkoli proces může volně pracovat s kteroukoli adresou v adresovém prostoru, a správce paměti mu automaticky přidělí "kus" skutečné paměti, který bude prostřednictvím dané adresy dosažitelný. Zmínili jsme se také o tom, že každý proces má tyto "kusy" (budeme jim říkat stránky) vlastní, a proto — na rozdíl od systémů bez virtuální paměti, jako byl např. OS/9 — nemůže jeden proces "ublížit" druhému tím, že by přepsal obsah jeho paměti.

Dokud je dost paměti, je vše v pohodě

Výše popsaný systém skvěle funguje, dokud je dostatek fyzické paměti pro všechny stránky ("kousky, přidělené na adresy, jež některý proces použil"). Jakmile by však procesy spotřebovaly všechnu fyzickou paměť, systém by se nám "zasekl", a další požadavek by nebylo možné splnit, dokud by některý proces paměť neuvolnil. Přesně tak tomu bylo v systémech bez virtuální paměti: jakmile nebylo dost paměti, bylo nutné ukončit alespoň některé z běžících aplikací.

Virtuální paměti může být vždycky dost!

Virtuální paměť ovšem dokáže vyřešit snadno a pohodlně i tento problém: stejně, jako se stránka fyzické paměti procesu přidělí ve chvíli, kdy ji proces potřebuje, je možné ji procesu opět odebrat: musíme se jen postarat o to, aby se skutečný obsah paměti neztratil.

Správce paměti tedy navíc potřebuje přístup k souborům: kdykoli je zapotřebí nějaká paměť, ale žádná volná stránka není momentálně k dispozici, správce prostě odebere stránku některému z procesů (samozřejmě se pokusí zvolit takový, který nejspíš s odpovídajícími adresami v paměti hnedtak pracovat nebude). Její obsah zapíše do souboru, a pak stránku vyprázdní a přidělí ji komukoli, kdo ji zrovna potřebuje.

Když se pak původní proces pokusí opět pracovat s některou z adres ze stránky, jež mu byla před nějakým časem odebrána, správce paměti mu přidělí nějakou stránku fyzické paměti — ovšemže skoro jistě jinou, než kterou měl proces předtím! — a uloží do ní z disku přesně ty samé údaje, jež v ní byly před časem, kdy s ní proces naposledy pracoval.

Správce paměti tedy pracuje podle následujícího algoritmu:

  1. proces potřebuje novou stránku (protože "si sáhl" na adresu, na které žádná není);
  2. je-li k dispozici volná stránka, pokračujeme bodem 5;
  3. vyhledáme proces a stránku, jež nejspíš nebudou hnedtak použity;
  4. obsah stránky uložíme na disk a zařadíme ji mezi volné;
  5. jestliže je pro daný proces obsah, odpovídající požadované adrese, uložen na disk, načteme jej do stránky; jinak stránku vynulujeme...
  6. ... a přidělíme ji procesu.

Příště si řekneme něco málo o realizaci bodu 3 a o důsledcích, jež má virtuální paměť na průchodnost celého systému.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Mac OS X CZ  

 » Rubriky  » Agregator  

 

 

 

Nejčtenější články
Nejlépe hodnocené články
Apple kurzy

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: