Virtuellt minne är ett område i ett datorsystems sekundära minneslagringsutrymme (t.ex. en hårddisk eller en solid state-enhet) som fungerar som om det vore en del av systemets RAM-minne eller primära minne.
I själva verket lagras de data som behövs för att köra program i RAM-minne, där processorn snabbt kan komma åt dem. Men när stora program körs, eller när många program körs samtidigt, kan systemets RAM-minne bli fullt.
För att komma runt detta problem kan vissa data som lagras i RAM-minne och som inte används aktivt tillfälligt flyttas till virtuellt minne (som fysiskt finns på en hårddisk eller annan lagringsenhet). Detta frigör utrymme i RAM, som sedan kan användas för att rymma data som systemet behöver komma åt omedelbart.
Då data byts ut mellan RAM och virtuellt minne när de inte behövs och tillbaka från virtuellt minne till RAM när de behövs, kan ett system fortsätta att fungera smidigt med mycket mindre fysiskt RAM än vad som annars skulle behövas.
Virtuellt minne gör det möjligt för ett system att köra större tillämpningar eller att köra flera tillämpningar samtidigt utan att RAM-minnet tar slut. Specifikt kan systemet fungera som om dess totala RAM-resurser var lika med mängden fysiskt RAM plus mängden virtuellt RAM.
- Varför finns det ett behov av virtuellt minne?
- Virtuellt minne vs. fysiskt minne
- Hur fungerar virtuellt minne?
- Hur man ökar det virtuella minnet i ett system
- Typer av virtuellt minne: De två vanligaste tillvägagångssätten är sidflyttning och segmentering. Virtuellt minne sidflyttning
- Virtuellt minnessegmentering
- Fördelar och nackdelar med virtuellt minne
- Fördelar med virtuellt minne
- Disadvantages of Virtual Memory
Varför finns det ett behov av virtuellt minne?
Virtuellt minne utvecklades när fysiskt RAM var mycket dyrt, och RAM är fortfarande dyrare per gigabyte än lagringsmedier som hårddiskar och solid state-enheter. Därför är det mycket billigare att använda en kombination av fysiskt RAM-minne och virtuellt minne än att utrusta ett datorsystem med mer RAM-minne.
Då användningen av virtuellt minne (eller ökningen av det virtuella minnet) inte medför någon extra ekonomisk kostnad (eftersom det använder befintligt lagringsutrymme) är det ett sätt för en dator att använda mer minne än vad som finns fysiskt tillgängligt i systemet.
En annan viktig drivkraft för användningen av virtuellt minne är att alla datorsystem har en begränsning (dikterad av hårdvara och mjukvara) för hur mycket fysiskt RAM som kan installeras. Genom att använda virtuellt minne kan systemet fortsätta att fungera bortom dessa gränser för fysiskt RAM.
Virtuellt minne vs. fysiskt minne
Då RAM-minne är dyrare än virtuellt minne, skulle det tyckas – allt annat lika – att datorer bör utrustas med så lite RAM-minne och så mycket virtuellt minne som möjligt.
Men faktum är att egenskaperna hos virtuellt minne skiljer sig från egenskaperna hos fysiskt minne. Den viktigaste skillnaden mellan virtuellt minne och fysiskt minne är att RAM-minne är mycket snabbare än virtuellt minne.
Så ett system med 2 GB fysiskt RAM-minne och 2 GB virtuellt minne kommer inte att ge samma prestanda som ett liknande system med 4 GB fysiskt RAM-minne. För att förstå varför är det nödvändigt att förstå hur virtuellt minne fungerar.
Hur fungerar virtuellt minne?
När ett program (inklusive operativsystemet) körs lagrar det platsen för programtrådar och andra data på en virtuell adress, medan data faktiskt lagras på en fysisk adress i RAM. Om det RAM-utrymmet senare behövs mer brådskande av en annan process kan uppgifterna bytas ut ur RAM och in i det virtuella minnet.
Ansvaret för att hålla reda på alla dessa uppgifter när de byts ut mellan fysiskt och virtuellt minne åligger datorns minneshanterare. Minneshanteraren upprätthåller en tabell som mappar virtuella adresser som används av operativsystemet och programmen till de fysiska adresser som data faktiskt lagras på. När data byts ut mellan RAM-minnet och det virtuella minnet uppdateras tabellen så att en viss virtuell adress alltid pekar på rätt fysisk plats.
En dator kan bara köra trådar och manipulera data som lagras i RAM-minnet och inte i det virtuella minnet. Och det tar en icke försumbar tid att byta ut data som behövs till RAM. Följaktligen innebär användningen av virtuellt minne en prestandaskada.
Som man säger på ett annat sätt kommer ett system med 4 GB RAM generellt sett att ge högre prestanda än ett system med 2 GB RAM och 2 GB virtuellt minne på grund av den prestandaskada som orsakas av bytet, och av den anledningen sägs det att virtuellt minne är långsammare än RAM.
Ett potentiellt problem med virtuellt minne är att om mängden RAM är för liten i förhållande till mängden virtuellt minne så kan det sluta med att ett system tillbringar en stor del av sina processorresurser med att byta data fram och tillbaka. Under tiden går utförandet av användbart arbete nästan i stå – en process som kallas thrashing.
För att förhindra thrashing är det vanligtvis nödvändigt att minska antalet program som körs samtidigt, eller helt enkelt öka mängden RAM-minne i systemet.
Operativsystem, såsom de flesta Windows-versioner, rekommenderar i allmänhet att användarna inte ökar det virtuella minnet mer än 1,5 gånger mängden fysiskt RAM-minne som finns. Så ett system med 4 GB RAM bör ha virtuellt minne på högst 6 GB.
För att minimera den prestandaskada som orsakas av växling mellan fysiskt och virtuellt minne är det bäst att använda den snabbaste lagringsenheten som är ansluten till systemet för att hysa det virtuella minnet, och att placera lagringsområdet för det virtuella minnet på en egen partition.
Virtuellt minne kan fungera i samverkan med en dators huvudminne för att möjliggöra snabbare och mer flytande operationer.
Hur man ökar det virtuella minnet i ett system
De flesta operativsystem tillåter användare att öka det virtuella minnet från en konfigurationssida.
- I Windows kan användarna också låta systemet hantera mängden virtuellt minne som tillhandahålls dynamiskt.
- Samma sak gäller för Mac OS där användarna kan använda inställningsfältet för att fördela virtuellt minne.
Typer av virtuellt minne: De två vanligaste tillvägagångssätten är sidflyttning och segmentering.
Virtuellt minne sidflyttning
I ett system som använder sidflyttning delas RAM-minnet upp i ett antal block – vanligen 4k stora – som kallas för sidor. Processer tilldelas sedan precis tillräckligt många sidor för att uppfylla sina minneskrav. Det innebär att det alltid kommer att gå en liten mängd minne till spillo, utom i det ovanliga fallet där en process kräver exakt ett helt antal sidor.
Under den normala driften byts sidor (dvs. minnesblock med en storlek på 4 kcal) mellan RAM och en sidofil, som representerar det virtuella minnet.
Virtuellt minnessegmentering
Segmentering är ett alternativt tillvägagångssätt för minneshantering, där processer i stället för sidor av fast storlek tilldelas segment av olika längd för att exakt tillgodose deras behov. Det innebär att till skillnad från i ett paged-system slösas inget minne bort i ett segment.
Segmentering gör det också möjligt att dela upp program i logiskt oberoende adressutrymmen, vilket kan göra dem lättare att dela och säkrare.
Men ett problem med segmentering är att eftersom varje segment är av olika längd kan det leda till minnes ”fragmentering”. Detta innebär att när segment allokeras och avallokeras kan små bitar av minne lämnas utspridda som är för små för att vara användbara.
När dessa små bitar byggs upp kan färre och färre segment av användbar storlek allokeras. Och om operativsystemet börjar använda dessa små segment finns det ett stort antal att hålla reda på, och varje process måste använda många olika segment, vilket är ineffektivt och kan minska prestandan.
Fördelar och nackdelar med virtuellt minne
Även om RAM-minnet numera är relativt billigt jämfört med vad det kostade när det virtuella minnet utvecklades för första gången, är det fortfarande mycket användbart och används fortfarande i många, kanske de flesta, datorsystem. Det viktigaste problemet med virtuellt minne gäller prestanda.
Fördelar med virtuellt minne
- Gör det möjligt att köra fler program samtidigt.
- Gör det möjligt att köra större program i system som inte har tillräckligt med fysiskt RAM-minne ensamt för att köra dem.
- Gör det möjligt att öka minnet på ett sätt som är mindre kostsamt än att köpa mer RAM-minne.
- 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.