Virtueller Speicher (englisch Virtual Memory) ist eine Abstraktion von Betriebssystem und Hardware, bei der jeder Prozess seinen eigenen, scheinbar zusammenhängenden Adressraum sieht – unabhängig davon, wie wenig physischer RAM tatsächlich vorhanden ist. Die Umsetzung von virtuellen auf physische Adressen übernimmt die Memory Management Unit (MMU) in der CPU.
Warum virtueller Speicher?
- Isolierung: Prozess A kann nicht auf den Speicher von Prozess B zugreifen; ein Programmfehler stürzt nur den eigenen Prozess ab, nicht das ganze System.
- Mehr Speicher als vorhanden: Seiten, die gerade nicht gebraucht werden, können ausgelagert sein und erst bei Bedarf geladen werden.
- Einfacheres Laden: Programme müssen ihre Adressen nicht mehr auf den realen Speicher umrechnen, Modul-Adressen bleiben überall gleich.
- Geschickte Techniken: Copy-on-Write beim Prozess-Fork, Memory-Mapped Dateien und Shared Memory zwischen Prozessen.
Technik: Paging und Seitentabellen
Der Adressraum ist in gleich große Seiten aufgeteilt (typisch 4 KiB, bei großen Seiten 2 MiB oder 1 GiB). Eine Seitentabelle je Prozess ordnet jeder virtuellen Seite eine physische Seite zu. Weil diese Übersetzung in jeder Millisekunde millionenfach gebraucht wird, hält die CPU die jüngsten Zuordnungen im TLB – einem schnellen Cache der Adress-Übersetzung.
Page Fault und Auslagerung
Greift ein Prozess auf eine Seite zu, die gerade nicht im RAM liegt, löst die MMU einen Page Fault aus – eine Exception, die als Interrupt an den Kernel geht. Der Kernel lädt die Seite nach (etwa aus einer Datei) und lässt den Zugriff erneut laufen. Ist der RAM voll, verschiebt er weniger genutzte Seiten auf die Festplatte – genau das übernimmt Swap unter Linux. Swap ist also ein Teil des virtuellen Speichers, nicht das Konzept selbst.
Abgrenzung zu anderen Speicherkonzepten
Der Cache ist eine transparente Hierarchie im Chip, die der Programmierer nicht sieht; der virtuelle Speicher ist eine sichtbare OS-/MMU-Abstraktion. Auch der Begriff „virtuell“ in anderen Kontexten – etwa virtuelle Maschinen oder VPS (virtuelle Server) – meint etwas anderes: Dort wird eine ganze Maschine abstrahiert, hier nur der Speicherraum. Moderne Systeme ergänzen noch Sicherheitsmechanismen wie die Zufalls-Positionierung von Bibliotheken (ASLR), die den Adressraum schwerer vorhersagbar macht.