8

Ich lese das Buch "Modern Operating System". Und ich bin verwirrt über die "Seitengröße".Warum 16-Bit-Adresse mit 12-Bit-Offset ergibt 4KB Seitengröße?

In dem Buch, der Autor sagt,

Die eingehende virtuelle 16-Bit-Adresse ist spaltet mich in eine 4-Bit-Seitennummer und 12-Bit-Offset. Mit 4 Bits für die Seitenzahl, können wir 16 Seiten haben, und mit 12 Bits für den Offset, können wir Adresse alle 4096 Bytes innerhalb einer Seite.

Warum 4096 Bytes? Mit 12 Bits können wir 4096 Einträge innerhalb einer Seite richtig adressieren. 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! :)

Antwort

9

Dies ist Byte adressierten Speicher angenommen (die fast jede Maschine in den letzten 30 Jahren verwendet), so bezieht sich jede Adresse auf ein Byte, kein Eintrag oder Adresse oder einen 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, die angesprochen wurden, was so funktionierte 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 Byteadressierbarkeit, 8-Bit-Bytes und Zweierkomplement-Ganzzahlen ziemlich einfach angenommen.

+0

Vielen Dank! :) –

+0

Ich arbeitete an einem großen Mainframe in den 70ern und 80ern, die angesprochen wurden. Sie boten eine Option an, die Hardware hinzufügte, mit der Sie Bytes oder BCD-Zeichen direkt adressieren konnten. – dbasnett

+2

@dbasnett: Ich hasse es, Ihnen zu brechen, aber die 70er waren vor mehr als 30 Jahren ... –

3

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

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.

0

okay, so haben Sie 16 Bit virtuelle Adresse lassen Sie sehen, 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 Bit links lassen Sie uns sehen, wie viele Adresse kann 12 Bits repräsentieren 2 ** 12 = 4096 Bytes

65536 Bytes es auch in 16 Seiten erreicht werden konnte enthält 4096 Bytes je 4096 durch Dividieren * 16 = 65536