Bei der Berechnung einer Paging -Adresse werden eine logische Adresse (die vom Programm verwendete Adresse) in eine physische Adresse (die Adresse im Hauptspeicher) übertragen. Diese Übersetzung wird von der Speicherverwaltungseinheit (MMU) behandelt. Der Prozess hängt von den Einzelheiten des Paging -Systems ab, aber die allgemeinen Schritte sind:
1. Teilen Sie die logische Adresse in Teile:
Die logische Adresse ist in zwei Teile unterteilt:
* Seitenzahl (PN): Dies zeigt an, auf welcher Seite des logischen Adressraums das Programm verweist. Die Anzahl der für die Seitenzahl verwendeten Bits hängt von der Seitengröße und der Größe des logischen Adressraums ab.
* Seitenversetzt (PO): Dies zeigt den Offset innerhalb der auf der Seite verwiesenen Seite an. Die Anzahl der für den Seitenversatz verwendeten Bits wird durch die Seitengröße bestimmt (z. B. eine 4 -KB -Seitengröße verwendet 12 Bit für den Offset, da 2
12
=4096).
Beispiel: Nehmen wir an, wir haben eine 32-Bit-logische Adresse und eine Seitengröße von 4 KB (2
12
Bytes).
* Seitenversetzt (PO): 12 Bit (2
12
=4096 Bytes)
* Seitenzahl (PN): 20 Bit (32 - 12 =20 Bit)
2. Wenden Sie sich an die Seitentabelle:
Die Seitennummer (PN) wird als Index in der Seitentabelle verwendet. Die Seitentabelle ist eine Datenstruktur, die vom Betriebssystem aufrechterhalten wird, das logische Seiten auf physische Rahmen ordnet. Jeder Eintrag in der Seitentabelle enthält:
* Bildnummer (FN): Die Anzahl des physischen Rahmens im Hauptspeicher, in dem sich die entsprechende Seite befindet.
* gültig/ungültiges Bit: Gibt an, ob sich die Seite derzeit im Hauptspeicher befindet (gültig) oder nicht (ungültig - wahrscheinlich im Sekundärspeicher). Andere Flaggen können ebenfalls vorhanden sein (z. B. schmutziges Bit, Schutzbits).
3. Konstruieren Sie die physische Adresse:
Wenn der Eintrag von Seitentabellen für das angegebene PN gültig ist, wird die physische Adresse durch Verkettung der Bildnummer (FN) und des Seitenversatzes (PO) konstruiert.
* Physische Adresse =Bildnummer (FN) || Page Offset (PO)
Beispiel (Fortsetzung):
Nehmen wir an, die logische Adresse lautet `0x0000ffff`.
* po: `0xffff` (12 Bit)
* pn: `0x0000` (20 Bit)
Die MMU verwendet PN (`0x0000`), um den entsprechenden Eintrag in der Seitentabelle nachzuschlagen. Nehmen wir an, der Seiteneintrag für Seitentabellen für PN `0x0000` enthält:
* fn: `0x1000` (Dies ist die Bildnummer im physischen Speicher)
* gültiges Bit: 1 (gültig)
Daher lautet die physische Adresse:
* physische Adresse =`0x1000ffff`
Multi-Level-Paging:
In Systemen mit großen Adressräumen wird mehrstufiges Paging verwendet. Dies beinhaltet mehrere Seiten Tabellen (z. B. ein Seitenverzeichnis, das auf Seitentabellen zeigt, die dann auf physische Rahmen verweisen). Der Prozess ist ähnlich, erfordert jedoch mehrere Tabellen -Lookups, um die endgültige Bildnummer zu bestimmen.
Segmentierung:
Die Segmentierung ist ein anderes Speicherverwaltungsschema, das den Speicher in Segmente mit variabler Größe unterteilt. Paging und Segmentierung können ebenfalls kombiniert werden. Die Adressberechnung in diesen Schemata ist komplexer.
Zusammenfassend lässt sich sagen, dass die Berechnung der Paging -Adressen die logische Adresse verwendet wird, um die entsprechende physikalische Adresse über eine Reihe von Tabellen -Lookups zu finden. Die genauen Details hängen von der spezifischen Architektur und der Implementierung des Speichermanagements des Betriebssystems ab.