2016-09-06 1 views
0

Ich weiß, wie grundlegende Speicheradressierung funktioniert und warum es immer empfohlen wird, dass wir eine Speicherkapazität von 2 verwenden (Erklärung für zukünftige Benutzer), da die von der CPU zur Adressierung des Speichers verwendeten Bits nur 2 Werte haben. Also können 2 Bits 4 Werte adressieren, 3 können 8 adressieren und so können N Bits 2^N Werte adressieren.Wie gehen Computer mit der Speicheradressierung um, wenn der Max-Speicher nicht auf der Leistung von 2 ist?

Was passiert dann, wenn ich eine andere Nummer habe? Angenommen, ich habe 160 GB Arbeitsspeicher auf einem Server (10 x 16 GB) installiert.

Angenommen, wir benötigen X Bits, um 128 GB RAM zu adressieren, verwendet die CPU nur X-Bits zur Adressierung und ignoriert die verfügbaren Adressen von "129 bis 160" oder verwendet X + 1 Bits und hat ungültige Adressen ? Wird es anstelle von ungültigen Adressen diese als virtuelles RAM verwenden?

Es kann sogar als reservierte Werte für alles, was ich weiß, verwenden, aber ich würde wirklich gerne verstehen, was passiert.

+0

Wenn Betriebssysteme 16 Bit waren, verwendeten sie EMM 'Extended Memory Manager', um eine Adressierung über 16 Bit hinaus zu ermöglichen. Dann, wenn Betriebssysteme 32bit waren sie in der Lage, 4 GB Speicher zu adressieren und jeder Speicher außerhalb von 4 GB überhaupt nicht verwendet werden, mit Ausnahme von Win32, wo es nur 3 GB war. Jetzt mit 64bits ist der maximale Speicher tatsächlich in Terabytes. Immer wenn der Speicher größer als der adressierbare Speicher ist, kann die CPU nicht mehr als die Größe erreichen, die sie adressieren kann. – alvits

+0

Die CPU ist an die Bitbreite gebunden, während das Betriebssystem an die Bitbreite gebunden ist. – alvits

Antwort

1

Angenommen, ein PC für diese Antwort, da es auf der Plattform viel mehr als die CPU abhängt.

Es funktioniert nicht annähernd so einfach. Aber zuerst,

wird es X + 1 Bits verwenden und haben einige ungültige Adressen?

Es wird immer alle Bits verwenden, die CPU kümmert sich nicht einmal um ungültige Adressen, Sie können sie verwenden. Es weiß nicht einmal, also kann es nicht kümmern.

Wer tut kennen, ist das BIOS, und es wird Ihnen sagen („Sie“ das Betriebssystem zu sein, vermutlich), was die Landschaft des linearen Adressraum mit ein paar BIOS-Interrupts aussieht. Der alte, der nur "wenig Speicher" erkennt, war ziemlich einfach, er sagt dir nur, wie viel Speicher da ist und überlässt es dir (die Landschaft war damals nicht so kompliziert, also reichte das aus). Die "neue" (kaum, aber vergleichsweise neuere), INT 0x15, EAX = 0xE820, wird Ihnen eine tatsächliche Karte geben, die die Form einer Liste linearer Adressraumbereiche mit Beschreibungen hat.

Sie werden nicht feststellen, dass das gesamte tatsächliche RAM in einem schönen zusammenhängenden Bereich ab 0 abgebildet wird. Es wird in Blöcken aufgeteilt, getrennt durch Löcher, in denen beispielsweise Speicherkarten abgebildet werden.

Und da es Löcher in den "niedrigen Adressen" gibt (obwohl "niedrig" relativ ist), kann ein Teil des echten RAM "nach oben" geschoben werden. Wenn Sie also 4 GB RAM haben, wird ein Teil davon auf Adressen oberhalb von 0xFFFFFFFF abgebildet. Wo die Löcher tatsächlich sind, hängt aber davon ab. Lesen Sie die Speicherkarte.

Als Beispiel die Karte könnte wie folgt aussehen:

memory map

erste Spalte Adresse beginnen, die zweite Spalte ist eine Größe, ist letzte Spalte Typ. Typ 1 ist normales RAM, Typ 2 ist kein RAM, Typ 3 hat Zeug darin, das du lesen willst, aber du kannst es benutzen, wenn du damit fertig bist, oder so heißt es in der Beschreibung. Es gibt auch ein paar mehr Arten. Diese Karte wurde in VirtualBox mit 4 GB RAM erstellt. Es fügt sich jedoch nicht genau dazu. Punkt ist, du kannst die Löcher sehen.

Wenn es viel weniger RAM gibt, wäre der zweite Typ 1 Bereich kürzer, aber der Rest würde gleich aussehen (auf VirtualBox wird es anderswo oft anders aussehen) - diese Typ 2 Bereiche in der Nähe der 32bit Grenze wird immer noch da sein, und es wird nur ein Bündel von "nichts" direkt unter ihnen abgebildet sein.

Also, es ist nicht annähernd so einfach wie die Verwendung einiger Bits in Adressen.

Verwandte Themen