Warum 16-Bit-Adresse mit 12-Bit-Offset ergibt 4KB Seitengröße?

9

Ich lese das Buch "Modernes Betriebssystem". Und ich bin verwirrt über die "Seitengröße".

In dem Buch sagt der Autor:

  

Die eingehende virtuelle 16-Bit-Adresse lautet   aufgeteilt in eine 4-Bit-Seitenzahl und   12-Bit-Offset Mit 4 Bits für die   Seitennummer können wir 16 Seiten haben, und   mit 12 Bits für den Offset können wir   adressiere alle 4096 Bytes in a   Seite.

Warum 4096 Bytes? Mit 12 Bits können wir 4096 Einträge innerhalb einer Seite richtig ansprechen. Ein Eintrag ist jedoch eine Adresse (in diesem Fall die Adressgröße = 16 Bits). Also ich denke, wir können 4096 (Eingabe) * 16 (Bit) = 4096 (Eingabe) * 2 (Byte) = 8 KB, aber warum das Buch sagt, dass wir 4096 (Bytes) adressieren können?

Vielen Dank im Voraus! :)

    
Mouhong Lin 12.09.2010, 05:02
quelle

4 Antworten

9

Dies setzt Byte-adressierten Speicher voraus (den fast jede Maschine in den letzten 30 Jahren benutzt), also bezieht sich jede Adresse auf ein Byte, nicht auf einen Eintrag oder eine Adresse oder irgendeinen anderen größeren Wert. Um einen 16-Bit-Wert zu speichern, benötigen Sie zwei aufeinander folgende Adressen (zwei Bytes).

Vor mehr als 30 Jahren gab es Maschinen, an die man sich wenden konnte, und die funktionierten wie Sie vermuten. Aber solche Maschinen hatten es schwer, mit byte-orientierten Daten (wie ASCII-Zeichen) umzugehen, und sind daher in Ungnade gefallen. Heutzutage werden Dinge wie Byte-Adressierbarkeit, 8-Bit-Bytes und Zweierkomplement-Ganzzahlen ziemlich einfach angenommen.

    
Chris Dodd 12.09.2010, 05:06
quelle
3

Die 12 Bits sind ein Offset innerhalb einer Seite. Der Offset ist in Bytes, nicht in Adressen. 2 ^ 12 ist 4096.

    
Mark Ransom 12.09.2010 05:08
quelle
0

Was Sie berechnen, ist die Seitengröße, d. h. die Größe einer Seite in der Seitentabelle im Speicher. Da wir 12 Bits für den Offset verwenden, ist jeder Frame im physischen Speicher 2 ^ 12 = 4096K. Jede Seite in der Seitentabelle belegt jedoch 2 ^ 12 Einträge x 2 Bytes = 8K im Speicher.

    
An Cong Tran 17.04.2014 16:13
quelle
0

okay, Sie haben also 16 Bit virtuelle Adresse, sehen Sie, was es bedeutet. Es bedeutet, Sie haben 2 ** 16 = 65536 Bytes.

4-Bit-Seitenzahl, dh 16 Seiten als 2 ^ 4 = 16 Jetzt benennen Sie die Seiten wie page1, page2 ... page16.

Jetzt sind wir mit 12 Bits übrig gelassen, lassen Sie uns sehen, wie viele Adressen 12 Bits 2 ** 12 = 4096 Bytes

darstellen können

65536 Bytes können auch durch Teilen in 16 Seiten mit jeweils 4096 Bytes wie 4096 * 16 = 65536

erreicht werden     
Mohit Dabas 03.10.2016 12:53
quelle