Virtuelle Speicherverwaltung
Das Prinzip der virtuellen Speicherverwaltung wurde im Jahre 1956 von Fritz-Rudolf Güntsch erfunden und ist heutzutage in allen modernen Betriebssystemen vorhanden.
Diese wichtige Technik der virtuellen Adressierung stellt jedem Programm einen virtuellen Adressraum zur Verfügung. Dieses Prinzip bringt den Sicherheitsvorteil mit sich, dass Programme nicht mehr direkt auf die physikalischen Speicheradressen zugreifen können. Das Betriebssystem muss nur dafür sorgen, dass diese virtuellen Adressräume auch wieder in physikalische Speicheradressen umgerechnet werden, damit der Prozessor auf die Daten des Hauptspeichers zugreifen kann. Diese Aufgabe der Umrechnung übernimmt die MMU (Memory Management Unit). Im Prozessor ist zusätzlich noch ein kleiner Puffer integriert (TLB = Translation Lookaside Buffer), der den Effekt hat, dass die Umrechnung von virtuellen zu physikalischen Adressen gespeichert wird. Dies beschleunigt die Umrechnung.
Paging
Im Zusammenhang mit der virtuellen Speicherverwaltung ist Paging noch eine weitere, wichtige Technik. Diese Technik wendet das Betriebssystem erst dann an, wenn nicht genügend Hauptspeicher zur Verfügung steht. Hier werden nur die Programmteile im Hauptspeicher gehalten, die gerade für die Ausführung des Programmes wichtig sind. Die Programmteile, die gerade verwendet werden, werden von der MMU in sogenannten Seitentabellen gespeichert. Wenn jetzt die MMU feststellt, das ein Programmteil, das für die Ausführung des Programms wichtig ist, noch nicht im Hauptspeicher liegt, wird sofort ein Interrupt ausgelöst (Seitenfehler=Page Fault). Jetzt geht der Pager los und fängt an, den Fehler zu beheben, indem er den fehlenden Programmteil in den Hauptspeicher lädt.
Diese Seitenfehler treten sehr oft auf. Im Windows Taskmanager kann man sich diese Seitenfehler anzeigen lassen.
(STRG+ALT+ENTF-->Taskmanager-->Ansicht-->Spalten auswählen)
So sieht es dann anschließend im Taskmanager aus:
Swapping
Eine andere Technik, die bei der virtuellen Speicherverwaltung eine wichtige Rolle spielt, ist Swapping. Diese Technik wird dann eingesetzt, wenn nicht genügend Hauptspeicher zur Verfügung steht, obwohl Paging eingesetzt wird. Es werden ganze Programmteile, die gerade nicht gebraucht werden, komplett auf einen anderen Speicher ausgelagert (z.B. auf die Festplatte).