/ / Größe des physischen Speichers VS Größe des virtuellen Speichers - Paging, virtueller Speicher, mmu

Größe des physikalischen Speichers VS Größe des virtuellen Speichers - Paging, virtueller Speicher, mmu

Ich arbeite derzeit an einigen Übungen zum Konzept des virtuellen Speichers. Ich bin mir jedoch nicht sicher, ob ich es richtig verstanden habe oder ob die Frage so unbedeutend ist, dass ich mir zu viele Sorgen mache:

Ein System arbeitet mit 20 Bit breiten virtuellen Adressen. Die Seitengröße beträgt 4096 Byte, und es wird ein Paging auf einer Ebene verwendet.
a) Wie groß ist der virtuelle Adressraum?
b) Wie groß ist der adressierbare physische Speicher?

Ich würde sagen, die Antwort ist für beide Fragen gleich, es ist 2^20 Byte. Ich kann nicht mehr physischen Speicher ansprechen als einen virtuellen Adressraum.

Antworten:

2 für die Antwort № 1

Im Algemeinen (als Antwort auf eine Klassenfrage) haben Sie recht (*). Ihr adressierbarer physischer Speicher ist die gleiche Größe als dein virtuelles.

Das ist in erster Linie der Punkt der V2P-Übersetzung. Denken Sie auch: Wenn Ihre virtuelle Adresse war MehrDann hätten Sie in Ihrem Programm möglicherweise Speicherplatz zugewiesen RAM nie erreichen, das wäre nutzlos, geschweige denn katastrophal. Auf der anderen Seite, wenn Sie kartieren könnten mehr Adressen als Sie in Ihrem virtuellen Speicher hatten, dann physische Räume würde vergeudenDarum gibt es auch keinen Sinn.

Um ganz sicher zu sein, können Sie die Übersetzung tatsächlich selbst vornehmen und zählen:
Von diesen 20 Bits brauchen Sie 12 von denen Adressen auf derselben Seite zugeordnet werden sollen (als 2^12 = 4096 Dies ist die Größe Ihrer Seite) 8 verbleibende Bits zum Auflisten / Zuordnen von PTEs in Ihrem Seitentabelle. Also kannst du haben 2^8 = 256 PTEs, und jeder Eintrag "hat" eine Seite von 4096 Bytes, insgesamt also (2^8) * (2^12) = 2 ^ 20 Bytes, genauso wie Sie berechnet haben.

Bearbeiten: Der beschriebene Übersetzungsprozess gilt nur für einstufige Seitentabellen, wie in der Frage gestellt. Das zweistufige Paging, das heute die Norm ist, erfordert einen weiteren Zwischenspeicher.

(*): Sehen user3344003Die Antwort und die Kommentare geben jedoch einige Informationen darüber, warum dies nicht immer der Fall ist


1 für die Antwort № 2

Tatsächlich erlauben manche Systeme einen größeren physischen Adressraum als den virtuellen Adressraum. 32-Bit-Intel ist ein Beispiel.

Ein Prozess kann nur auf den Speicherbereich zugreifen, der durch die Bits in einer Adresse begrenzt ist. Das System kann jedoch auf größere Speicherbereiche in derselben Anzahl von Bits zugreifen, indem Seiten von Bytes verwendet werden.