Virtueller Speicher ist eine Speicherverwaltungstechnik, die es einem Computer ermöglicht, Programme auszuführen und auf Daten zuzugreifen, die größer sind als der im System verfügbare physische Speicher. Dabei wird für jeden Prozess ein virtueller Adressraum erstellt, bei dem es sich um einen zusammenhängenden Bereich von Adressen handelt, die der Prozess verwenden kann. Dieser virtuelle Adressraum wird dann dem physischen Speicher des Systems zugeordnet, sodass die Speicherverwaltungseinheit (MMU) der CPU die virtuelle Adresse in eine physische Adresse übersetzt, wenn ein Prozess auf eine virtuelle Adresse zugreift.
Virtueller Speicher wird durch die Verwendung eines Paging-Mechanismus ermöglicht. Seiten sind Speicherblöcke mit fester Größe, typischerweise 4 Kilobyte (KB) oder mehr, und jede virtuelle Adresse ist in eine Seitennummer und einen Offset innerhalb der Seite unterteilt. Wenn ein Prozess auf eine virtuelle Adresse zugreift, prüft die MMU, ob sich die Seite mit dieser Adresse im physischen Speicher befindet. Befindet sich die Seite im Speicher, übersetzt die MMU die virtuelle Adresse in eine physische Adresse und der Zugriff ist abgeschlossen.
Befindet sich die Seite nicht im Speicher, generiert die MMU eine Seitenfehlerausnahme. Das Betriebssystem (OS) behandelt dann den Seitenfehler, indem es eine zu entfernende Seite aus dem physischen Speicher auswählt und sie durch die benötigte Seite von der Festplatte ersetzt. Dieser Vorgang wird als Seitenersetzung bezeichnet. Das Betriebssystem verwendet verschiedene Algorithmen, um zu bestimmen, welche Seiten entfernt werden sollen. Diese Algorithmen sind darauf ausgelegt, die Anzahl der Seitenfehler zu minimieren und so die Leistung des Systems zu verbessern.
Der virtuelle Speicher ist ein wesentlicher Bestandteil moderner Betriebssysteme und ermöglicht es Computern, Programme auszuführen, die viel größer sind als der verfügbare physische Speicher. Es bietet außerdem eine Isolierung zwischen Prozessen, sodass jeder Prozess über einen eigenen privaten virtuellen Adressraum verfügt und nicht auf den Speicher anderer Prozesse zugreifen kann.