Antwort 1:

Eine virtuelle Adresse ist das, was eine Anwendung sieht, eine physische Adresse ist das, was die tatsächliche Hardware und das Betriebssystem sehen. Es gibt auch eine hardwarebeschleunigte Übersetzung zwischen physischen und virtuellen Adressen (Translation Lookaside Buffer).

Der Grund für den virtuellen Speicher liegt hauptsächlich in der Bequemlichkeit und Sicherheit. Auf diese Weise können Anwendungen die Daten des anderen nicht allzu leicht überfrachten (wie dies bei frühen Betriebssystemen der Fall war, bei denen alle Programme im selben Adressraum ausgeführt wurden), und sie können so tun, als ob alle Der RAM gehört ausschließlich ihnen (z. B. können viele Apps an derselben virtuellen Adresse starten und überschreiben sich im RAM nicht gegenseitig, da ihnen unterschiedliche physische Adressen zugewiesen werden). Auf diese Weise können Sie auch Seiten absichtlich nicht zuordnen, wodurch viele Adressen ungültig werden. Wenn also eine App einen Fehler aufweist und versucht, von einem seltsamen Ort aus zu schreiben oder zu lesen, wird eine Ausnahme ausgelöst (auf der Hardware) Level, ohne Software-Checks).

Welches ist größer? Nun, theoretisch sind sie gleich; zum Beispiel virtuelle 32-Bit-Adressen, physische 32-Bit-Adressen; Kein Unterschied in der Breite, nur Übersetzung.

In der Praxis ist es etwas komplizierter, und welches größer ist, hängt davon ab, um welches Betriebssystem und welche Hardware es sich handelt. Ich denke, dass PCs physisch etwa 40 Bit für die Adressierung verwenden können, sowohl in 32-Bit (PAE-fähig) als auch 64-Bit-Maschinen, aber die virtuellen Adressen sind 32 Bit bzw. 64 Bit - in einem 32-Bit-Betriebssystem wäre der physische also größer, während in einem 64-Bit-Betriebssystem der virtuelle Adressraum größer wäre (mit anderen Worten, Es ist nicht möglich, alle praktisch adressierbaren Speicherplätze zu füllen, unabhängig davon, ob Sie über genügend RAM-Sticks verfügen oder nicht. Die Hardware kann diese einfach nicht adressieren, obwohl die Zeigergröße offiziell 64 Bit beträgt.


Antwort 2:

Eine virtuelle Adresse wird einem Übersetzungsprozess unterzogen, um sie einer realen Adresse zuzuordnen. Dieser Prozess beinhaltet die Verwendung von Nachschlagetabellen. Durch einfaches Bearbeiten des Inhalts dieser Nachschlagetabellen kann das Betriebssystem dieselbe virtuelle Adresszuordnung zu jeder von ihm ausgewählten realen Adresse erstellen. Die Vorstellung, dass einer größer oder kleiner als der andere ist, trifft nicht zu.