Angenommen, wir arbeiten mit einem System mit 40 Bit für physikalische Adressen. Der gesamte physikalische Adressraum (unter der Annahme eines byteadressierbaren Speichers) beträgt Bytes oder 1 TiB. Und wenn virtuelle Adressen 48 Bit lang sind, bedeutet dies, dass mehr Adressen für den virtuellen Speicher verfügbar sind als Speicherorte im physischen Speicher.
Dies ist für mich sinnvoll, da sich die "überzähligen" Adressen auch auf Festplattenspeicherorte beziehen können. Ich verstehe jedoch nicht, wie die Übersetzung zwischen virtuellen und physischen Adressen erfolgt. Ich gehe davon aus, dass irgendwo eine Zuordnung gespeichert ist, die VAS-Standorte mit den physischen Standorten verknüpft. Wie können alle diese Zuordnungen möglicherweise im Speicher gespeichert werden, wenn es mehr virtuelle Adressorte als physische Standorte gibt? Zum Speichern jeder virtuellen Adresse benötigen Sie mindestens 48 Bit und zum Speichern des physischen Standorts, dem sie zugeordnet ist, weitere 40 Bit. Sie können also natürlich nicht einfach eine 1: 1-Zuordnung jeder virtuellen Adresse zu ihrem physischen Gegenstück speichern, da die Zuordnung jedes Standorts mehr Speicher als den physischen Speicher selbst beanspruchen würde.
Was genau fehle ich hier?
quelle
Antworten:
Der Trick, um diese Arbeit zu machen, ist "Paging". Wenn Sie Daten von einer Festplatte in den physischen Speicher übertragen, werden nicht nur einige Bytes übertragen. Sie bringen eine ganze Seite. 4 KB ist eine sehr häufige Seitengröße.
Wenn Sie nur die Seiten und nicht jedes einzelne Byte im Auge behalten müssen, wird die Zuordnung erheblich günstiger. Wenn Sie einen 48-Bit-Adressraum und 4096-Byte-Seiten haben, müssen Sie nur verfolgen, welche der 2 ^ 36 Seiten (ungefähr 69 Milliarden Seiten). Das ist viel einfacher! Die Aufzeichnung, wo sich alle Seiten befinden, wird als "Seitentabelle" bezeichnet.
Wenn Sie tatsächlich 1-256 TiB Speicher benötigen, ist es keine große Sache, ein paar Gigabyte aufzugeben, um diese Seitentabelle zu speichern. In der Praxis werden wir jedoch beispielsweise mehrstufige Seitentabellen verwenden , wodurch wir etwas effizienter arbeiten und die Seiten nur für Bereiche des Adressraums behalten, den wir tatsächlich verwenden.
quelle