Was ist der Unterschied zwischen Seitengröße und Seitentabelleneintragsgröße?

Beste Antwort

Nun, die Seitengröße ist der Platz, den 1 Seite benötigt. (Das ist ziemlich einfach )

Um hier nur einen kleinen Hintergrund zu haben, ist eine Seitentabelle eine Tabelle mit Konvertierungen von virtuellen zu physischen Adressen, die das Betriebssystem verwendet, um künstlich Erhöhen Sie die Gesamtmenge des in einem System verfügbaren Hauptspeichers. Der physische Speicher sind die tatsächlichen Bits, die sich an Adressen im Speicher (DRAM) befinden. Im virtuellen Speicher liegt das Betriebssystem an den Prozessen, um ihnen mitzuteilen, wo sie sich befinden, um Dinge zu tun wie 2 ^ 64 Bit Adressraum zulassen, obwohl 2 ^ 34 Bit der am häufigsten verwendete RAM ist. (2 ^ 32 Bit sind 4 Gigabyte, also 2 ^ 34 sind 16 GB.)

Die meisten standardmäßigen Seitentabellengrößen sind 4096 kb für jeden Prozess, aber die Anzahl der Seitentabelleneinträge kann sich erhöhen, wenn der Prozess mehr Prozessspeicher benötigt. Seitentabellengrößen können anfänglich auch kleinere oder größere Mengen oder Speicher zugewiesen werden. Es ist nur so, dass 4 KB normalerweise die beste Größe für die meisten Prozesse sind. Daher ist die Seitentabelleneintragsgröße wäre genau die richtige Menge an Speicherplatz, um eine Adresse in einem 32-Bit-Adressraum zu speichern.

Betrachten wir hier ein Beispiel: Betrachten Sie ein System mit einem logischen 32-Bit-Adressraum. Wenn die Seite Die Größe in einem solchen System beträgt 4 KB (212). Dann kann eine Seitentabelle aus bis zu 1 Million Einträgen (232/212) bestehen. Angenommen, besteht jeder Eintrag aus 4 Bytes , jeder Prozess benötigt möglicherweise nur bis zu 4 MB physischen Adressraum für die Seitentabelle.

Wie kann man das vollständig verstehen?

Antwort: 4 Bytes (32 Bit) ) ist genau die richtige Menge an Speicherplatz, um eine Adresse in einem 32-Bit-Adressraum zu speichern. Da 1 Million Einträge mit jeweils 4 Bytes 4 MB ergeben, „benötigt“ ein Prozess möglicherweise bis zu 4 MB physischen Adressraum.

Antwort

Eine Seite ta ble wird vom Betriebssystem pro Prozess verwaltet. Jeder Prozess hat eine eigene Seitentabelle . Aus diesem Grund müssen keine Prozesskennungen in der Seitentabelle gespeichert werden. Die Seitentabelle ordnet eine bestimmte logische / virtuelle Seitennummer der tatsächlichen physischen Frame- / Seitenadresse zu.

Die logische Adresse für eine Speicherreferenz hat die Form:

Logische Adresse:

Seitennummer (virtuelle Seitennummer) wird verwendet, um in die Seitentabelle nachzuschlagen und die Basisadresse des physischen Frames abzurufen, dem sie zugeordnet ist. Die Basisadresse (f) des Rahmens wird dann mit dem Versatz in die Seite (d) kombiniert, um die physikalische Speicherrahmenadresse zu erhalten als:

f = Seitentabelle [p]

Physikalische Adresse:

Betrachten Sie nun ein System mit:

1. logischer Adressraum: 32-Bit 2. Seitengröße: 4 KB (2 ^ 12) 3. Seitentabelleneintragsgröße: 4 Byte 4. physischer Speicher: 2 GB

Bitte beachten Sie, dass 4 Bytes eines Seitentabelleneintrags speichern effektiv mehrere Arten von Informationen außer der Basisadresse des physischen Rahmens. Diese Informationen können für den Speicherschutz (gültiges / ungültiges Bit), die Art des Zugriffs (Lesen / Schreiben), die Buchhaltung usw. verwendet werden Ich beziehe mich auf die physikalische Rahmenadresse (f), ich beziehe mich tatsächlich auf diesen bestimmten Teil des 4-Byte-Eintrags.

Berechnen wir die Größe einer Seitentabelle:

Größe von die Seitentabelle = (Anzahl der Einträge * Größe jedes Eintrags).

Angesichts der obigen Parameter wird eine logische 32-Bit-Adresse unterteilt in:

oder

.

Wir können jetzt berechnen, dass die Anzahl der Einträge in der Seitentabelle (Gesamtzahl der virtuellen Seiten) bis zu 2 ^ 20 betragen kann. Daher wäre die Größe der Seitentabelle:

(2 ^ 20) * 4 Bytes = 4 MB Speicherplatz (pro Prozess).

Für die Seitentabelle jedes Prozesses wird so viel Speicherplatz im physischen Speicher benötigt. Vergessen Sie nicht, dass wir nur 2 GB Hauptspeicher haben und 4 MB Speicherplatz für die Seitentabelle jedes Prozesses möglicherweise keine gute Idee sind. Außerdem ist vielen virtuellen Adressen möglicherweise keine physische Seitenadresse zugeordnet Trotzdem ist die Seitentabellengröße groß. Auch wenn das „gültige“ Bit für eine virtuelle Seitennummer nicht gesetzt ist, muss in der Seitentabelle ein Steckplatz dafür vorhanden sein.

Bei Freigabe Speicher, der eine Seitentabelle pro Prozess hat, erfordert die Eingabe derselben physischen Seite in die Seitentabelle jedes Prozesses, der einen gemeinsamen Zugriff auf diese Seite hat. Somit behält das System am Ende mehrere Einträge für dieselbe physische Rahmenadresse. Keine sehr gute Auslastung des physischen Speichers.

Wir können auch verstehen, dass eine Seitentabelle für jeden Prozess einen Eintrag pro virtueller Adresse enthält. Die Größe der Tabelle ist daher proportional zur Größe von logisch / virtuell Adressraum, der sich tatsächlich als enorm herausstellen kann.

Unser Ziel ist es, den zum Speichern der Seitentabellen erforderlichen physischen Speicher zu reduzieren / optimieren. Invertierte Seitentabelle ist eine solche Lösung.

Invertierte Seitentabelle ist eine globale Seitentabelle, die vom Betriebssystem für alle Prozesse verwaltet wird. Es gibt nur eine Seitentabelle im gesamten System, was bedeutet, dass zusätzliche Informationen in der Seitentabelle gespeichert werden müssen, um Seitentabelleneinträge zu identifizieren, die jedem Prozess entsprechen.

Es speichert einen Eintrag pro physischem Frame und ist ein lineares Array, in dem der Inhalt an jedem Speicherort und der Index jedes Speicherorts die physische Frame-Adresse ist. Die Formel ändert sich jetzt:

= Seitentabelle [f]

Dies impliziert sofort, dass die virtuelle Seitenzahl nicht mehr nachgeschlagen werden kann. Die gesamte Tabelle muss Eintrag für Eintrag durchsucht werden, um einen passenden Eintrag zu finden, dessen PID gleich „id“ und dessen virtuelle Seitenzahl gleich „p“ ist. Die der Übereinstimmung entsprechende Indexposition ist die physikalische Rahmenadresse (f), die dann zusammen mit dem Versatz (d) die physikalische Adresse ergibt.

Wir können diese Nachschlagezeit auf einer invertierten Seite leicht ableiten Die Tabelle kann im Vergleich zu einer einfachen Seitentabelle erheblich höher sein.

Da in der Tabelle jedoch ein Eintrag pro physischer Rahmenadresse gespeichert ist und im gesamten System eine einzelne Seitentabelle vorhanden ist, hat sich die von der invertierten Seitentabelle verwendete Speichermenge erheblich verringert. Wie?

Betrachten Sie dieselben Parameter erneut:

1. logischer Adressraum: 32-Bit 2. Seitengröße: 4 KB (2 ^ 12) 3. Seitentabelleneintragsgröße: 4 Byte. 4. physischer Speicher: 2 GB (2 ^ 31)

Anzahl der Einträge in der Seitentabelle = Anzahl der physischen Seiten =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 physische Seiten oder Frames.

Nehmen wir an, wir verwenden 1-Byte-Prozesskennungen. Die Größe jedes Seitentabelleneintrags wäre:

8 Bit (PID) + 20 Bit ( virtuelle Seitenzahl) + 4 Bit (Zugriffsinformationen) = 32 Bit = 4 Byte.

Größe der Seitentabelle = (2 ^ 19) * 4 = 2 MB für das gesamte System.

Die Leistung invertierter Seitentabellen wird normalerweise über Hash-Seitentabellen geregelt. Neben der Leistung gibt es jedoch noch einen weiteren Nachteil bei der Verwendung invertierter Seitentabellen. Es handelt sich um gemeinsam genutzten Speicher.

Da es nur einen Eintrag gibt In der Seitentabelle pro physischem Frame, die genau eine virtuelle Seitenzahl enthält, können wir denselben physischen Frame nicht mehr in verschiedenen Prozessen mehreren virtuellen Seitenzahlen zuordnen. Es gibt Möglichkeiten, dies zu umgehen, ohne jedoch die hier zu schreibenden Details zu kennen .

Quelle – Betriebssystemkonzepte (Silberschatz et al.)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.