Virtueel geheugen is een gebied in het secundaire geheugen van een computersysteem (zoals een harde schijf of een solid-state drive) dat zich gedraagt alsof het een deel is van het RAM-geheugen of het primaire geheugen van het systeem.
Natuurlijk worden de gegevens die nodig zijn om toepassingen uit te voeren, opgeslagen in het RAM, waar ze snel door de CPU kunnen worden geraadpleegd. Maar wanneer grote toepassingen worden uitgevoerd, of wanneer veel toepassingen tegelijk worden uitgevoerd, kan het RAM-geheugen van het systeem vol raken.
Om dit probleem te omzeilen, kunnen sommige gegevens die in het RAM zijn opgeslagen en niet actief worden gebruikt, tijdelijk worden verplaatst naar het virtuele geheugen (dat zich fysiek op een harde schijf of een ander opslagapparaat bevindt).
Door gegevens tussen RAM en virtueel geheugen te wisselen wanneer ze niet nodig zijn en terug van virtueel geheugen naar RAM wanneer ze wel nodig zijn, kan een systeem probleemloos blijven werken met veel minder fysiek RAM dan het anders nodig zou hebben.
Virtueel geheugen stelt een systeem in staat grotere toepassingen of meer toepassingen tegelijk te draaien zonder dat het RAM opraakt. Het systeem kan werken alsof de totale RAM-bron gelijk is aan de hoeveelheid fysieke RAM plus de hoeveelheid virtuele RAM.
- Waarom is er behoefte aan virtueel geheugen?
- Virtueel geheugen vs. fysiek geheugen
- Hoe werkt virtueel geheugen?
- Hoe virtueel geheugen in een systeem te vergroten
- Typen virtueel geheugen: Paging en segmentatie
- Virtueel geheugen paging
- Virtual Memory Segmentation
- Voordelen en Nadelen van Virtueel Geheugen
- Voordelen van virtueel geheugen
- Disadvantages of Virtual Memory
Waarom is er behoefte aan virtueel geheugen?
Virtueel geheugen is ontwikkeld toen fysieke RAM erg duur was, en RAM is per gigabyte nog steeds duurder dan opslagmedia zoals harde schijven en solid-state drives. Om die reden is het veel goedkoper om een combinatie van fysiek RAM en virtueel geheugen te gebruiken dan een computersysteem uit te rusten met meer RAM.
Omdat het gebruik van virtueel geheugen (of het vergroten van virtueel geheugen) geen extra financiële kosten met zich meebrengt (omdat het bestaande opslagruimte gebruikt), biedt het een manier voor een computer om meer geheugen te gebruiken dan fysiek beschikbaar is op het systeem.
Een andere belangrijke drijfveer voor het gebruik van virtueel geheugen is dat alle computersystemen een limiet hebben (gedicteerd door hardware en software) op de hoeveelheid fysiek RAM die kan worden geïnstalleerd. Door virtueel geheugen te gebruiken kan het systeem blijven werken voorbij die fysieke RAM-limieten.
Virtueel geheugen vs. fysiek geheugen
Omdat RAM duurder is dan virtueel geheugen, lijkt het – alles gelijk houdend – dat computers moeten worden uitgerust met zo weinig mogelijk RAM en zo veel mogelijk virtueel geheugen.
Maar in feite zijn de kenmerken van virtueel geheugen anders dan die van fysiek geheugen. Het belangrijkste verschil tussen virtueel geheugen en fysiek geheugen is dat RAM veel sneller is dan virtueel geheugen.
Dus een systeem met 2 GB fysiek RAM en 2 GB virtueel geheugen zal niet dezelfde prestaties leveren als een soortgelijk systeem met 4 GB fysiek RAM. Om te begrijpen waarom, is het nodig te begrijpen hoe virtueel geheugen werkt.
Hoe werkt virtueel geheugen?
Wanneer een toepassing (inclusief het besturingssysteem) draait, slaat het de locatie van programma-threads en andere gegevens op een virtueel adres op, terwijl de gegevens feitelijk op een fysiek adres in RAM worden opgeslagen. Als later die RAM-ruimte dringender nodig is voor een ander proces, dan kunnen de gegevens uit het RAM naar het virtuele geheugen worden overgebracht.
De verantwoordelijkheid voor het bijhouden van al deze gegevens terwijl ze worden uitgewisseld tussen fysiek en virtueel geheugen berust bij de geheugenbeheerder van de computer. De geheugenbeheerder houdt een tabel bij waarin de virtuele adressen die door het besturingssysteem en de toepassingen worden gebruikt, worden toegewezen aan de fysieke adressen waar de gegevens feitelijk zijn opgeslagen. Wanneer gegevens worden uitgewisseld tussen RAM en virtueel geheugen, wordt de tabel bijgewerkt, zodat een bepaald virtueel adres altijd naar de juiste fysieke locatie wijst.
Een computer kan alleen threads uitvoeren en gegevens manipuleren die in RAM zijn opgeslagen en niet in het virtuele geheugen. En het kost een niet te verwaarlozen hoeveelheid tijd om gegevens die nodig zijn naar het RAM te swappen. Hieruit volgt dat het gebruik van virtueel geheugen een prestatie-impact met zich meebrengt.
Anders gezegd, een systeem met 4 GB RAM zal over het algemeen betere prestaties leveren dan een systeem met 2 GB RAM en 2 GB virtueel geheugen vanwege de prestatie-impact die wordt veroorzaakt door het swappen, en om die reden wordt gezegd dat virtueel geheugen langzamer is dan RAM.
Een potentieel probleem met virtueel geheugen is dat als de hoeveelheid aanwezig RAM te klein is in vergelijking met de hoeveelheid virtueel geheugen, een systeem uiteindelijk een groot deel van zijn CPU-bronnen kan besteden aan het heen en weer swappen van gegevens. Ondertussen komt de prestatie van nuttig werk bijna tot stilstand – een proces dat bekend staat als thrashing.
Om thrashing te voorkomen is het meestal nodig om het aantal applicaties dat gelijktijdig wordt uitgevoerd te verminderen, of simpelweg de hoeveelheid RAM in het systeem te vergroten.
Besturingssystemen, zoals de meeste versies van Windows, raden over het algemeen aan dat gebruikers het virtuele geheugen niet groter maken dan 1,5 maal de hoeveelheid aanwezige fysieke RAM. Dus een systeem met 4 GB RAM zou niet meer dan 6 GB virtueel geheugen moeten hebben.
Om de prestatieklap door het swappen tussen fysiek en virtueel geheugen zo klein mogelijk te houden, kunt u het beste het snelste opslagapparaat gebruiken dat op het systeem is aangesloten om het virtuele geheugen te hosten, en de opslagruimte voor het virtuele geheugen op een eigen partitie te plaatsen.
Virtueel geheugen kan samenwerken met het hoofdgeheugen van een computer om snellere, vloeiendere bewerkingen mogelijk te maken.
Hoe virtueel geheugen in een systeem te vergroten
Met de meeste besturingssystemen kunnen gebruikers het virtuele geheugen vergroten vanaf een configuratiepagina.
- In Windows kunnen gebruikers het systeem ook toestaan de hoeveelheid virtueel geheugen dynamisch te beheren.
- Op vergelijkbare wijze kunnen gebruikers in Mac OS het voorkeurenpaneel gebruiken om virtueel geheugen toe te wijzen.
Typen virtueel geheugen: Paging en segmentatie
Virtueel geheugen kan op verschillende manieren worden beheerd door het besturingssysteem van een systeem, en de twee meest voorkomende benaderingen zijn paging en segmentatie.
Virtueel geheugen paging
In een systeem dat paging gebruikt, wordt het RAM-geheugen verdeeld in een aantal blokken – meestal 4k groot – die pagina’s worden genoemd. Processen krijgen dan net genoeg pagina’s toegewezen om aan hun geheugeneisen te voldoen. Dat betekent dat er altijd een kleine hoeveelheid geheugen wordt verspild, behalve in het ongebruikelijke geval dat een proces precies een heel aantal pagina’s nodig heeft.
Tijdens de normale gang van zaken worden pagina’s (d.w.z. geheugenblokken van 4K groot) uitgewisseld tussen RAM en een paginabestand, dat het virtuele geheugen vertegenwoordigt.
Virtual Memory Segmentation
Segmentatie is een alternatieve benadering van geheugenbeheer, waarbij in plaats van pagina’s van een vaste grootte, aan processen segmenten van verschillende lengte worden toegewezen om precies aan hun eisen te voldoen. Dat betekent dat, anders dan in een paged systeem, er geen geheugen wordt verspild in een segment.
Segmentatie maakt het ook mogelijk om applicaties op te splitsen in logisch onafhankelijke adresruimten, waardoor ze makkelijker te delen zijn, en veiliger.
Maar een probleem met segmentatie is dat, omdat elk segment een verschillende lengte heeft, het kan leiden tot geheugen “fragmentatie.” Dit betekent dat als segmenten worden gealloceerd en ge-de-alloceerd, er kleine stukjes geheugen overblijven die te klein zijn om nuttig te zijn.
Als deze kleine stukjes zich opstapelen, kunnen er steeds minder segmenten van nuttige grootte worden gealloceerd. En als het OS deze kleine segmenten wel gaat gebruiken, dan zijn er enorm veel om bij te houden, en elk proces zal veel verschillende segmenten moeten gebruiken, wat inefficiënt is en de prestaties kan verminderen.
Voordelen en Nadelen van Virtueel Geheugen
Ondanks dat RAM nu relatief goedkoop is in vergelijking met de kosten toen virtueel geheugen voor het eerst werd ontwikkeld, is het nog steeds uiterst nuttig en wordt het nog steeds gebruikt in veel, misschien wel de meeste, computersystemen. Het belangrijkste probleem met virtueel geheugen heeft te maken met de prestaties.
Voordelen van virtueel geheugen
- Maakt het mogelijk meer toepassingen tegelijk uit te voeren.
- Maakt het mogelijk grotere toepassingen uit te voeren in systemen die alleen niet genoeg fysiek RAM-geheugen hebben om ze uit te voeren.
- Biedt een manier om het geheugen te vergroten die minder duur is dan het kopen van meer RAM-geheugen.
- 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.