Die Speicherverwaltung ist ein sehr wichtiger Teil des Betriebssystems. Mit der ständigen Weiterentwicklung der Computertechnologie entwickelt sich auch die Art der Speicherverwaltung weiter. In diesem Artikel stellen wir Ihnen einige gängige Methoden der Speicherverwaltung für das Intel 64 System vor.
Die Flat-Page-Speicherverwaltung ist eine relativ einfache Art der Speicherverwaltung. Sie nutzt die seitenbasierte Verwaltung, um die segmentbasierte Verwaltung auszublenden. Insbesondere werden logische Adressen direkt auf lineare Adressen abgebildet, ein Codesegment und ein Datensegment definiert und die Größe beider Segmente beträgt 4 GB. Der Vorteil dieses Ansatzes besteht darin, dass er einfach und leicht verständlich ist.
Um das Problem der Speicherabtrennung für mehrere Prozesse zu lösen, kann ein geschützter flacher Speicherverwaltungsansatz verwendet werden. Dabei werden ein Kernel-Codesegment, ein Kernel-Datensegment, ein Benutzer-Codesegment und ein Benutzer-Datensegment definiert, die jeweils eine Basisadresse von 0 und eine Größe von 4 GB haben. Prozesse verwenden das Kernel-Segment, wenn sie Kernel-Code ausführen, und das Benutzer-Segment, wenn sie Benutzer-Code ausführen. Der Vorteil dieses Ansatzes ist, dass er die Isolierung des Speichers von mehreren Prozessen ermöglicht. Der Nachteil ist jedoch, dass eine Adressübersetzung erforderlich ist, was die Effizienz beeinträchtigt.
Die segmentierte Speicherverwaltung ist ein Ansatz, der ausschließlich die segmentierte Verwaltung verwendet und die seitenbasierte Verwaltung ausblendet. Sie ermöglicht die Isolierung des Multiprozessspeichers, erfordert jedoch eine Adressübersetzung, was sich ebenfalls auf die Effizienz auswirkt.
Die seitenbasierte Speicherverwaltung auf der Grundlage der physikalischen Adresserweiterung ist ein Ansatz, der einen größeren physikalischen Adressraum unterstützt. Er führt den Mechanismus der Physical Address Expansion (PAE) ein, um 36-Bit physikalische Adressen zu unterstützen. In diesem Verwaltungsmodus wird der physische Adressraum auf 64 GB erweitert, aber der lineare Adressraum bleibt bei 4 GB. Seitenverzeichnisse und Seitentabelleneinträge werden auf 64 Bit erweitert, so dass die Anzahl der Einträge in einem Seitenverzeichnis oder einer Seitentabelle 512 beträgt und ein Seitenverzeichnis nur 1 GB linearen Adressraum beschreibt. Daher wurde eine Seitenverzeichnis-Zeigertabelle (PDP) mit nur vier Tabelleneinträgen eingeführt. und CR3 verweist auf die PDP. wurde der Mechanismus der Adressübersetzung geändert. Wenn das PS-Bit in einem Seitenverzeichniseintrag auf 1 gesetzt wird, wird die darin beschriebene Seite zu einer 2MB-Seite.
Im 64-Bit-Modus werden die Segmente normalerweise ausgeschaltet und die Überprüfung der Segmentgrenzen wird nicht mehr durchgeführt. Die Basisadressprozessoren von CS, DS, ES und SS werden gemeinsam als 0 behandelt. FS und GS können jedoch alles andere als 0 sein und die Basisadresse von FS oder GS wird der logischen Adresse hinzugefügt, wenn sie in eine frühere Adresse umgewandelt wird. Die Basisadressbits von FS und GS sind 64-Bit-Adressen und nur die unteren 32 Bits davon werden im Kompatibilitätsmodus verwendet und im MSR gespeichert. Im 64-Bit-Modus beruht die Verwaltung des Speichers ausschließlich auf dem Paging-Mechanismus. Die Intel64-Architektur erweitert den PAE-Mechanismus, um lineare 64-Bit-Adressen und physikalische 52-Bit-Adressen zu unterstützen. Die Erweiterungen umfassen:
- Die Zeigertabelle für das Seitenverzeichnis wurde auf 512 Einträge erweitert.
- Es wurde eine Page-Mapping-Tabelle der vierten Ebene, PML4, eingeführt, deren Einträge jeweils auf einen PDP verweisen können.
- Alle Einträge der Level 4-Seitenabbildungstabelle wurden auf 64 Bit erweitert.
- Das PS-Flag in den Seitenkatalogeinträgen wird zur Steuerung von 4KB- und 2MB-Seiten verwendet.
- Alle Seitentabelleneinträge haben ein neues Execute Prohibit Flag EXB in Bit 63.