Überblick über die segmentierte Speicherverwaltung

Bei der Segment-Seiten-Speicherverwaltung wird die lineare Adresse eines Segments in lineare Seiten gleicher Größe unterteilt (4KB, 4MB oder 2MB, usw.). Der physische Speicherplatz wird ebenfalls in gleich große physische Seiten unterteilt. Das Betriebssystem verwaltet eine Seitentabelle, um die Zuordnung von linearen Seiten zu physischen Seiten zu verwalten. Die Seitentabelle ist in der IA-32-Architektur in zwei Ebenen unterteilt, den Seitenkatalog und die Seitentabelle.
Das Seitenverzeichnis ist ein Array, dessen Elemente Seitenverzeichniseinträge (PDEs) genannt werden, und jeder Seitenverzeichniseintrag beschreibt eine Seitentabelle. Die Größe des Seitenverzeichnisses ist eine Seite (4KB) und es gibt 1024 Seitenverzeichniseinträge in einem Seitenverzeichnis. Die Größe eines Seitenverzeichniseintrags beträgt 4 Byte. Die Größe einer Seitentabelle ist eine Seite (4KB). Die Größe eines Seitentabelleneintrags beträgt 4 Byte, so dass eine Seitentabelle bis zu 1024 lineare Seiten beschreiben kann.
Physikalische Seiten werden im Voraus unterteilt und ihre Startposition muss auf einer 4KB (2^12)-Grenze liegen. Die unteren 12 Bits sind also alle Nullen. Dann können die unteren 12 Bits Informationen von außen speichern.
P ist das Präsenz-Bit. r/w ist das Lese-/Schreib-Flag-Bit. u/s ist das Benutzer-Flag-Bit, wobei eine 0 einen Superuser anzeigt. a ist das Zugriffs-Flag-Bit. d ist das Schmutz-Flag-Bit.
Das PAT-Flag wird im Seitenkatalogeintrag durch das PS-Flag ersetzt, das die physische Seitengröße angibt.
Das Register CR3 ist für die physikalische Adresse des aktuell verwendeten Seitenverzeichnisses bestimmt, daher wird CR3 auch als Register für die Basisadresse des Seitenverzeichnisses bezeichnet. Solange der Prozess aktiv ist, sollte sich sein Seitenverzeichnis immer im Speicher befinden.
Der Seitenverzeichniseintrag kann auch direkt auf eine physische Seite verweisen, um die Adressübersetzung zu beschleunigen, die normalerweise auf 4MB-Seiten eingestellt ist, die vom Betriebssystem-Kernel belegt werden. Der Seitenverzeichniseintrag hat eine PS-Adresse von 1 Ding, die eine 4MB-Seite und nicht mehr eine Seitentabelle beschreibt.
Der Paging-Mechanismus wird vom Betriebssystem-Kernel eingeleitet, indem das PG-Flag in CR0 auf 1 gesetzt wird.
Nachdem der Paging-Mechanismus in Gang gesetzt wurde, muss jede lineare Adresse eine Übersetzung des Seitenverzeichnisses und der Seitentabelle durchlaufen. Die IA-32-Architektur enthält einen Cache, TIB, der die zuletzt verwendeten Seitenverzeichnis- und Seitentabelleneinträge speichert. Wenn Seitenverzeichnis- und Tabelleneinträge geändert werden, muss der Kernel die entsprechenden Einträge in der TIB ungültig machen. Alles in der TIB (außer der Global Page) wird automatisch ungültig, wenn CR3 geändert wird. Die Anweisung INVLPG setzt den angegebenen Eintrag in der TLB als ungültig.