Widersprüchliche Definitionen des virtuellen Speichers

386
Celeritas

Es scheint, dass es zwei Definitionen für virtuelles Gedächtnis gibt, und ich frage mich, ob beide das Gleiche beschreiben oder sind es zwei ähnliche, aber unterschiedliche Konzepte, die dasselbe heißen?

Definition 1 : Mittel zur Erweiterung des Arbeitsspeichers um sekundären Speicher

"Virtueller Speicher ist eine Funktion eines Betriebssystems (OS), mit der ein Computer einen Mangel an physischem Speicher ausgleichen kann" - techtarget

"Virtueller Speicher ist simulierter RAM. Wenn Sie Ihren gesamten Arbeitsspeicher aufgebraucht haben, werden die Daten auf Ihrem Computer in einen leeren Speicherplatz auf der Festplatte verschoben." - Computer-Verlauf löschen

"Virtueller Speicher ist eine Technik, mit der Prozesse ausgeführt werden können, die im Speicher nicht vollständig verfügbar sind" - Tutorialspoint

Definition 2 : System, von dem der Speicher angesprochen wird

"Virtueller Speicher ist eine Speicherverwaltungsmethode ... Er ordnet Speicheradressen, die von einem Programm, so genannte virtuelle Adressen, verwendet werden, in physische Adressen im Computerspeicher ab." - Wikipedia

und virtueller Speicher ist das, was dafür verantwortlich ist, einem Programm seinen eigenen Adressraum zu geben. Es kann also davon ausgegangen werden, dass der Anfang an der Adresse 0x00 liegt

Frage : bin ich verwirrt? Wie sind diese Definitionen kompatibel?

2

3 Antworten auf die Frage

2
Archimedix

Virtueller Speicher ist jeder Speicher, der nicht unbedingt eins zu eins dem physischen Speicher zugeordnet werden muss. Es beschreibt normalerweise ein Konzept oder eine Architektur und impliziert, dass einige Schnittstellen verwendet werden müssen.

Grundsätzlich können beide angegebenen Definitionen zutreffen: Es kann sich um Speicher handeln, der auf einem anderen Medium als dem Haupt-RAM gespeichert ist, und Adressen haben, die nicht mit physischen Adressen übereinstimmen.

Beispielsweise können Ihre Anwendungen unter Windows Speicherbereiche haben, die dieselbe virtuelle Adresse verwenden, aber unterschiedliche Inhalte haben, während einige andere Bereiche an gleichen Adressen denselben Inhalt verwenden, z. B. Code aus Bibliotheken, und Sie haben möglicherweise für jede App gemeinsame Inhalte an verschiedenen Adressen insbesondere bei ASLR, wo Adressen randomisiert werden.

Gleichzeitig bietet die virtuelle Adressierung auch die Möglichkeit, virtuellen Speicher transparent auf die Festplatte abzubilden, normalerweise mit Hilfe von CPU-Ausnahmen oder Interrupts, die ausgelöst werden, wenn der Code auf einen Speicher zugreift, der nicht dem physischen RAM zugeordnet werden kann, so dass das Betriebssystem automatisch darauf zugreifen kann Laden Sie die Daten in den RAM und gewähren Sie dann Zugriff darauf.

0
Ouroborus

Sie beschreiben das Gleiche. Der Wikipedia-Artikel ist eine technische Erklärung. Ich denke, das Intro des Artikels ist schlecht / unbeholfen formuliert. Der Hauptteil des Artikels beschreibt es ziemlich gründlich.

Virtueller Speicher ist als Substantiv jeder Speicherplatz, der verwendet wird, um zu speichern, was sonst im Speicher vorhanden wäre, was aber normalerweise nicht der Fall ist. Dies ist in der Regel der Fall, weil dort nicht genügend Platz vorhanden ist oder er für eine Weile nicht benötigt wird (relativ; "a während "Bruchteile von Sekunden" sein könnten. Normalerweise ist dies Platz auf einer Art Langzeitspeicher, der zu diesem Zweck ausgeliehen wurde (Seitendateien auf Festplatten sind das übliche Beispiel). In einigen Situationen (wie bei Servern) kann dies zu diesem Zweck Hardware sein.

Der Wikipedia-Artikel spricht darüber, erweitert aber das Konzept auf die Subsysteme (z. B. virtuelle Adressierung), die die Implementierung ermöglichen.

Kannst du erklären, wie sie eigentlich dasselbe beschreiben? Celeritas vor 8 Jahren 0
Man kann "Speicher" willkürlich in zwei Arten aufteilen: "Speicher" und "alles andere". Das "alles andere" ist normalerweise langsamer und längerfristig. Ansonsten handelt es sich um dasselbe, um Daten zu speichern. Wenn Leute wie Sie und ich über virtuelles Gedächtnis sprechen, sprechen wir normalerweise über Speichermedien. Wenn die Leute aus der Informatik darüber reden, reden sie über das Ganze, einschließlich der Bits, die es überhaupt erst möglich machen. Der Wikipedia-Artikel behandelt es wie ein Informatik-Thema (wie es sollte). Die anderen Artikel behandeln es wie gewöhnliche Leute. Ouroborus vor 8 Jahren 0
0
Jim Smith

Sie beschreiben zwei (verwandte) Dinge. Die erste beschreibt, wie das System damit fertig wird, dass nicht genügend physischer Speicher zur Verfügung steht, indem einige Informationen zwischen physischem Speicher und einem Plattenlaufwerk hin und her gewechselt werden. Dies wird vom Betriebssystem vor den laufenden Programmen verborgen und lässt den physischen Speicher größer erscheinen, als er tatsächlich ist. Versuchen Sie, RAM-Auslagerungsdateien nachzuschlagen

Die zweite beschreibt, wie ein Prozessor entscheidet, auf welchen Teil des Speichers (normalerweise der tatsächliche physische Speicher) für jedes auf einem System ausgeführte Programm zugegriffen werden soll. Es könnte als virtuelle Speicheradressierung besser beschrieben werden. Auf diese Weise kann jedes Programm, das auf der Maschine ausgeführt wird, annehmen, dass es einen eigenen Speicherblock hat, der bei Adresse 00000 beginnt, aber tatsächlich sind die Speicherblöcke tatsächlich über den physischen Speicher verteilt. Versuchen Sie, die Speicheradressierung und die Zeiger nachzuschlagen