Virtuální paměť je oblast sekundárního paměťového prostoru počítačového systému (například pevného disku nebo jednotky SSD), která se chová, jako by byla součástí operační paměti nebo primární paměti systému.
Data potřebná ke spuštění aplikací jsou v podstatě uložena v operační paměti, kde k nim má procesor rychlý přístup. Při spouštění rozsáhlých aplikací nebo při spouštění mnoha aplikací najednou však může dojít k zaplnění paměti RAM systému.
Aby se tento problém obešel, lze některá data uložená v paměti RAM, která se aktivně nepoužívají, dočasně přesunout do virtuální paměti (která je fyzicky umístěna na pevném disku nebo jiném úložném zařízení). Tím se uvolní místo v paměti RAM, které pak může být použito pro data, k nimž systém potřebuje bezprostředně přistupovat.
Přehazováním dat mezi pamětí RAM a virtuální pamětí, když nejsou potřeba, a zpět z virtuální paměti do paměti RAM, když jsou potřeba, může systém nadále hladce pracovat s mnohem menším množstvím fyzické paměti RAM, než by jinak potřeboval.
Virtuální paměť umožňuje systému spouštět větší aplikace nebo provozovat více aplikací najednou, aniž by došlo k vyčerpání paměti RAM. Konkrétně může systém pracovat tak, jako by se jeho celkové zdroje RAM rovnaly množství fyzické paměti RAM plus množství virtuální paměti RAM.
Proč je potřeba virtuální paměť?
Virtuální paměť byla vyvinuta v době, kdy byla fyzická paměť RAM velmi drahá, a paměť RAM je v přepočtu na gigabajt stále dražší než paměťová média, jako jsou pevné disky a polovodičové jednotky. Z tohoto důvodu je mnohem levnější používat kombinaci fyzické paměti RAM a virtuální paměti než vybavit počítačový systém větším množstvím paměti RAM.
Protože používání virtuální paměti (nebo zvětšování virtuální paměti) nemá žádné další finanční náklady (protože využívá stávající úložný prostor), nabízí způsob, jak může počítač využívat více paměti, než je v systému fyzicky k dispozici.
Dalším klíčovým důvodem pro používání virtuální paměti je skutečnost, že všechny počítačové systémy mají omezení (dané hardwarem a softwarem) na množství fyzické paměti RAM, které lze nainstalovat. Použití virtuální paměti umožňuje systému pokračovat v provozu i za těmito limity fyzické paměti RAM.
Virtuální paměť vs. fyzická paměť
Protože paměť RAM je dražší než virtuální paměť, zdálo by se – za stejných podmínek – že počítače by měly být vybaveny co nejmenší pamětí RAM a co největším množstvím virtuální paměti.
Ve skutečnosti jsou však vlastnosti virtuální paměti jiné než vlastnosti fyzické paměti. Klíčový rozdíl mezi virtuální a fyzickou pamětí spočívá v tom, že paměť RAM je velmi rychlá než virtuální paměť.
Systém s 2 GB fyzické paměti RAM a 2 GB virtuální paměti tedy nenabídne stejný výkon jako podobný systém se 4 GB fyzické paměti RAM. Abychom pochopili proč, je nutné porozumět tomu, jak funguje virtuální paměť.
Jak funguje virtuální paměť?
Při běhu aplikace (včetně operačního systému) ukládá umístění programových vláken a dalších dat na virtuální adresu, zatímco data jsou ve skutečnosti uložena na fyzické adrese v paměti RAM. Pokud později toto místo v paměti RAM naléhavěji potřebuje jiný proces, mohou být data vyměněna z paměti RAM do virtuální paměti.
Zodpovědnost za sledování všech těchto dat při jejich výměně mezi fyzickou a virtuální pamětí nese správce paměti počítače. Správce paměti udržuje tabulku, která mapuje virtuální adresy používané operačním systémem a aplikacemi na fyzické adresy, na kterých jsou data skutečně uložena. Při přehazování dat mezi pamětí RAM a virtuální pamětí se tabulka aktualizuje tak, aby daná virtuální adresa vždy ukazovala na správné fyzické umístění.
Počítač může spouštět pouze vlákna a manipulovat s daty, která jsou uložena v paměti RAM, nikoli ve virtuální paměti. A výměna potřebných dat do paměti RAM zabere nezanedbatelný čas. Z toho vyplývá, že používání virtuální paměti znamená zásah do výkonu.
Jinak řečeno, systém se 4 GB paměti RAM bude obecně nabízet vyšší výkon než systém se 2 GB paměti RAM a 2 GB virtuální paměti kvůli zásahu do výkonu způsobenému swapováním, a proto se říká, že virtuální paměť je pomalejší než paměť RAM.
Jedním z potenciálních problémů virtuální paměti je, že pokud je množství přítomné paměti RAM příliš malé ve srovnání s množstvím virtuální paměti, může systém nakonec strávit velkou část prostředků procesoru swapováním dat tam a zpět. Mezitím se výkon užitečné práce téměř zastaví – proces známý jako thrashing.
Pro zabránění thrashingu je obvykle nutné snížit počet současně spuštěných aplikací nebo jednoduše zvýšit množství paměti RAM v systému.
Operační systémy, jako je většina verzí systému Windows, obecně doporučují, aby uživatelé nezvyšovali virtuální paměť nad 1,5násobek množství fyzické paměti RAM. Systém se 4 GB RAM by tedy neměl mít virtuální paměť větší než 6 GB.
Chcete-li minimalizovat zásah do výkonu způsobený přehazováním mezi fyzickou a virtuální pamětí, je nejlepší použít k umístění virtuální paměti nejrychlejší paměťové zařízení připojené k systému a oblast pro ukládání virtuální paměti umístit na vlastní oddíl.
Virtuální paměť může působit společně s hlavní pamětí počítače a umožnit tak rychlejší a plynulejší operace.
Jak zvětšit virtuální paměť v systému
Většina operačních systémů umožňuje uživatelům zvětšit virtuální paměť z konfigurační stránky.
- V systému Windows mohou uživatelé také umožnit systému dynamicky spravovat množství poskytované virtuální paměti.
- Podobně v operačním systému Mac OS mohou uživatelé použít panel předvoleb k přidělení virtuální paměti.
Typy virtuální paměti:
Virtuální paměť může být operačním systémem spravována různými způsoby a dva nejběžnější přístupy jsou stránkování a segmentace.
Stránkování virtuální paměti
V systému, který používá stránkování, je paměť RAM rozdělena do několika bloků – obvykle o velikosti 4k – nazývaných stránky. Procesům je pak přiděleno právě tolik stránek, aby byly splněny jejich požadavky na paměť. To znamená, že vždy dojde k malému plýtvání pamětí, s výjimkou neobvyklého případu, kdy proces potřebuje přesně celý počet stránek.
Při běžných operacích jsou stránky (tj. paměťové bloky o velikosti 4K) vyměňovány mezi pamětí RAM a stránkovacím souborem, který představuje virtuální paměť.
Segmentace virtuální paměti
Segmentace je alternativní přístup ke správě paměti, kdy jsou místo stránek o pevné velikosti procesům přidělovány různě dlouhé segmenty, které přesně splňují jejich požadavky. To znamená, že na rozdíl od stránkovacího systému se v segmentu neplýtvá pamětí.
Segmentace také umožňuje rozdělit aplikace do logicky nezávislých adresových prostorů, což může usnadnit jejich sdílení a zvýšit bezpečnost.
Problémem segmentace však je, že protože každý segment má jinou délku, může vést k „fragmentaci“ paměti. To znamená, že při alokaci a dealokaci segmentů mohou zůstat rozptýlené malé kousky paměti, které jsou příliš malé na to, aby byly užitečné.
Jak se tyto malé kousky hromadí, lze alokovat stále méně segmentů užitečné velikosti. A pokud operační systém začne tyto malé segmenty používat, pak jich musí sledovat obrovské množství a každý proces bude muset používat mnoho různých segmentů, což je neefektivní a může snížit výkon.
Výhody a nevýhody virtuální paměti
Přestože je paměť RAM v současné době relativně levná ve srovnání s její cenou v době, kdy byla virtuální paměť poprvé vyvinuta, je stále velmi užitečná a stále se používá v mnoha, možná ve většině počítačových systémů. Klíčový problém virtuální paměti se týká výkonu.
Výhody virtuální paměti
- Umožňuje současný běh více aplikací.
- Umožňuje běh větších aplikací v systémech, které pro jejich běh nemají dostatek samotné fyzické paměti RAM.
- Poskytuje způsob zvětšení paměti, který je méně nákladný než nákup větší paměti RAM.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.