Virtuální paměť
Z Wikipedie, otevřené encyklopedie
Virtuální paměť nebo také adresování virtuální paměti je zvláštní způsob správy operační paměti počítače. Umožňuje operačnímu systému využívat vnitřní paměť, která je významně větší, než je skutečná fyzická velikost paměti. Děje se to tím, že se v danou chvíli nepotřebná paměť odkládá na pevný disk (nebo na jiný odkládací prostor) a v případě potřeby se opět zavádí do vnitřní paměti.
Princip virtuální paměti byl rozpracován na přelomu 50. a 60. let 20. století. Koncem 60. let se začal stávat standardem OS sálových počítačů. Dnes je virtuální paměť běžnou součástí všech moderních operačních systémů. Zvýšené nároky na systémové a hardwarové zdroje (zvláště na diskový subsystém) jsou zanedbatelné v porovnání s výhodami, které použití virtuální paměti přináší. Je to především menší potřeba fyzické paměti, která je i přes neustále klesající ceny řádově dražší než odkládací diskový prostor (nejen cenou za uložený bit, ale i spotřebou elektřiny, flexibilitou a zabraným prostorem). Systém virtuální paměti umožňuje efektivně využít menší operační paměť za cenu jen nepatrné ztráty výkonu a přináší výhody dokonce i v případě, že k odložení paměti na disk nedojde.
Obsah |
[editovat] Výhody
- paměť, kterou má běžící proces k dispozici není omezena fyzickou velikostí instalované paměti
- bez virtuální paměti by musel operační systém přidělit i paměť, kterou proces ve skutečnosti nevyužije nebo ji začne využívat až později
- každý běžící proces má k dispozici svou vlastní paměťovou oblast, ke které má přístup pouze on sám a nikdo jiný
- metody správy paměti zabezpečují optimální výměnu paměťových stránek mezi fyzickou počítačovou pamětí a diskem. Málo používaná část paměti tak vůbec nemusí být zavedena ve vnitřní paměti
- paměť jednotlivým procesům lze tak organizovat, že se paměť z hlediska procesu jeví jako lineární, přestože ve skutečnosti může být umístěna na různých místech vnitřní paměti i odkládacího prostoru.
[editovat] Nevýhody
- Při špatném (malém) dimenzování reálné operační paměti může dojít ke ztrátě výpočetního výkonu (probíhá neustálá výměna dat mezi pamětí a diskem namísto výpočtů). Je ovšem nutné zmínit, že bez virtuální paměti by v takovém případě výpočet vůbec nemohl proběhnout.
[editovat] Základní principy
- Všechny adresy, které proces používá jsou spravovány pouze jako virtuální - transformaci na fyzické adresy provádí správa virtuální paměti
- Existují dvě základní metody implementace virtuální paměti - stránkování a segmentace
- Při stránkování je paměť je rozdělena na větší úseky stejné velikosti, které se nazývají stránky. Správa virtuální paměti rozhoduje samostatně o tom, která paměťová stránka bude zavedena do vnitřní paměti a která bude odložena do odkládacího prostoru (swapu).
- Při segmentaci je paměť rozdělena na úseky různé velikosti nazývané segmenty.
- Používají se různé strategie pro řízení přesunu stránek/segmentů tam a zpět, často odpovídající strategiím cacheování. Příkladem je LRU (Least Recently Used - nejdéle nepoužívaná), NFU (Not Frequently Used - nepoužívaná často) nebo Aging (Stárnutí).
[editovat] Strategie řízení přesunu
- OPT
- Nahraď tu stránku (segment, položku cache), která bude nejpozději znovu zapotřebí. S výjimkou experimentálních systémů se jedná o čistě teoretickou strategii (protože nelze předvídat chování programu) používanou pro teoretický výzkum účinnosti ostatních strategií.
- FIFO
- First in, first out - nahraď nejstarší stránku. Ta ovšem může být stále používána, tato strategie proto není příliš efektivní. Je ale jednoduchá na implementaci.
- LRU
- Least Recently Used - nahraď nejdéle nevyužívanou stránku. Při přesné implementaci vyžaduje náročné udržování informací o používaných stránkách.
- LFU
- Least Frequently Used - nahraď nejméně využívanou stránku. Při přesné implementaci vyžaduje náročné udržování informací o používaných stránkách.
- Pseudo-LRU
- Označení pro algoritmus podobný LRU s omezenou (často drasticky) přesností. V praxi se často používá právě Pseudo-LRU, případně se stopami LFU.