Die CPU enthält eine Memory Management Unit (MMU) , die die virtuellen
Adressen in physikalische Adressen umrechnet. Für diesen Vorgang wird der
virtuelle Speicher in gleichgroße Seiten aufgeteilt. Falls nun die CPU
auf eine Adresse zugreifen will, sendet sie diese Anforderung an die MMU. Die
MMU stellt fest in welcher virtuellen Seite sich diese Adresse befindet und
errechnet die zugehörige physikalische Seite (vergleiche Abbildung
).
Nun ist es natürlich möglich, dass sich die Adresse auf einer Seite befindet, die nicht
im physikalischen Speicher liegt (z.B. 8497 in Abbildung
).
In einem solchen Fall wird ein Zugriff auf die Festplatte nötig. Zunächst
produziert die MMU einen Interrupt Seitenfehler (vergleiche
Kapitel
), der den laufenden
Prozess unterbricht und ins Betriebssystem verzweigt. Das Betriebssystem muss
nun die angefragte Seite in den physikalischen Speicher einlagern. Dies kann
nur passieren, wenn entweder im physikalischen Speicher noch Platz ist oder
eine bisher eingelagerte Seite gelöscht und vorher möglicherweise ausgelagert
wird. Auslagern ist nötig, wenn seit dem letzten Einlagern der Seite eine
Speicherstelle verändert wurde. Der physikalische Speicher stellt also eine
bestimmte Anzahl von Seitenrahmen zur Verfügung, in die verschiedene
Seiten des virtuellen Speichers eingelagert werden können. Es gibt verschiedene
Algorithmen die das Ein- und Auslagern von Seiten durchführen.
Bevor wir auf die Algorithmen eingehen, betrachten wir zunächst die Einträge in die Seitentabelle. In der Seitentabelle wird die Zuordnung der Seiten im virtuellen Speicher zu den Seitenrahmen des physikalischen Speichers festgelegt.
Einträge in die Seitentabelle sind in hohem Maße rechnerabhängig, haben aber in der Regel einen folgenden Aufbau:
12cm Eintrag
Die wichtigste Komponente ist die Seitennummer im physikalischen Speicher. Das ist die eigentliche Zuordnung von virtuellem und physikalischen Speicher. Das Bit ein-/ausgelagert zeigt an, ob eine Seite im physikalischen Speicher eingelagert ist. Das Schutzbit zeigt an, welcher Zugriff erlaubt ist (lesen oder lesen und schreiben). Das M-Bit wird gesetzt, wenn ein Schreibevorgang auf die Seite erfolgt ist. Das R-Bit schließlich wird gesetzt, wenn die ein Schreibe- oder Lesevorgang auf die Seite erfolgt ist.
Nun können wir die uns den Seitenersetzungsalgorithmen zuwenden.