Die Erzeugung einer physischen Adresse hängt stark vom Speicherverwaltungssystem des Betriebssystems und der Computerarchitektur ab. Es gibt keinen einzigen universellen Algorithmus. Der allgemeine Prozess beinhaltet jedoch die Zuordnung einer logischen (virtuellen) Adresse an eine physische Adresse. Diese Zuordnung ist entscheidend, weil:
* Schutz: Mehrere Prozesse werden gleichzeitig ausgeführt, und jeder benötigt seinen eigenen isolierten Speicherplatz. Der direkte Einsatz physischer Adressen würde zu Chaos- und Sicherheitslücken führen.
* Effizienz: Prozesse benötigen möglicherweise nicht alle zugewiesenen Speicher gleichzeitig. Die Zuordnung ermöglicht den effizienten Einsatz des physischen RAM.
* Speicherfreigabe: Prozesse müssen möglicherweise bestimmte Speicherregionen teilen. Die Zuordnung hilft, diese Freigabe sicher zu verwalten.
Hier ist eine Aufschlüsselung des Prozesses, der sich auf den häufigsten Ansatz unter Verwendung von Paging konzentriert:
1. logische Adressgenerierung: Ein Programm generiert eine logische Adresse (auch als virtuelle Adresse bezeichnet). Dies ist die Adresse, die das Programm verwendet, unabhängig vom physischen Speicherlayout. Es besteht normalerweise aus zwei Teilen:
* Seitenzahl: Identifiziert, auf welche Seite das Programm zugreift.
* Offset: Identifiziert den spezifischen Ort innerhalb dieser Seite.
2. Seite Tabelle Lookup: Das Betriebssystem verwendet eine Datenstruktur, die als * Seitentabelle * bezeichnet wird, um logische Adressen in physische Adressen zu übersetzen. Diese Tabelle ist in der Regel mehrstufig für Effizienz bei der Behandlung großer Adressräume. Jeder Eintrag in der Seitentabelle entspricht einer Seite des virtuellen Speichers des Prozesses. Der Eintrag enthält:
* Gegenwart Bit: Gibt an, ob die Seite derzeit im physischen Speicher geladen ist. Wenn nicht, tritt ein * Seitenfehler * auf und löst das Betriebssystem aus, um die Seite aus dem Sekundärspeicher (wie eine Festplatte) zu laden.
* Bildnummer: Die Anzahl des physischen Speicherrahmens (ein zusammenhängender Block des physischen Speichers), in dem sich die Seite befindet.
* Schutzbits: Geben Sie Zugriffsrechte an (lesen, schreiben, ausführen).
3. Berechnung der physischen Adresse: Der Seitentabelleneintrag für die angegebene Seitennummer befindet sich. Wenn das vorliegende Bit festgelegt ist, wird die physische Adresse durch Verkettung berechnet:
* Bildnummer (aus der Seitentabelle): Dies zeigt die Startadresse der Seite im physischen Speicher an.
* Offset (aus der logischen Adresse): Dies ist der gleiche Versatz in der Seite.
4. physische Adresse: Die resultierende Verkettung ist die physische Adresse, die zum Zugriff auf den Speicherort verwendet wird.
Beispiel (vereinfacht):
Sagen wir:
* Logische Adresse:Seitenzahl =2, Offset =100
* Page -Tabelleneintrag für Seite Nummer 2:Bildnummer =5, vorhandener Bit =1
* Rahmengröße =1024 Bytes
Die physische Adresse wäre:(Bildnummer * Frame -Größe) + Offset =(5 * 1024) + 100 =5224
Variationen und Komplikationen:
* Segmentierung: Ein weiteres Speicherverwaltungsschema verwendet Segmente anstelle von Seiten. Die Segmentierung bietet eine andere Möglichkeit, das Gedächtnis zu organisieren, das häufig in Verbindung mit Paging verwendet wird.
* Übersetzungs -Lookaside -Puffer (TLB): Um die Adressübersetzung zu beschleunigen, namens ein Cache namens TLB Stores kürzlich verwendete Seiten -Tabelleneinträge.
* Multi-Level-Seitentabellen: Für sehr große Adressräume sind Seitentabellen häufig hierarchisch (z. B. eine Seitentabelle, die auf andere Seitentabellen zeigt).
* Speichermaked I/O: Auf einige Geräte werden mit Speicheradressen zugegriffen. Diese Zuordnungen werden vom Betriebssystem und der Hardware abgeschlossen.
* Adressraumlayout Randomisierung (ASLR): Eine Sicherheitsfunktion, die den Ort der wichtigsten Speicherregionen randomisiert, um Exploits zu erschweren.
Zusammenfassend ist die Erzeugung einer physischen Adresse ein komplexer Prozess, der mehrere Schritte und Datenstrukturen umfasst, die vom Betriebssystem verwaltet werden. Die Details variieren je nach spezifischer Architektur und Betriebssystem, aber das Kernprinzip bleibt gleich:die Zuordnung logischer Adressen zu physischen Adressen für Schutz, Effizienz und Speicherverwaltung.