Warum kann der virtuelle Speicher nicht die Leistung meines Computers verbessern?

825
appa yip yip

Ich studiere Computerarchitektur, genauer gesagt, den virtuellen Speicher. Ich kann nicht verstehen, warum das Deaktivieren des virtuellen Speichers die Leistung meines Computers nicht verbessert .

Ich weiß, dass das Deaktivieren des virtuellen Speichers einige Nachteile hat (Windows kann beispielsweise keine Crash-Dumps erstellen), aber sollte mein System dadurch nicht beschleunigt werden?

Wenn ich den virtuellen Speicher verwende, muss meine MMU für jeden Zugriff auf den Arbeitsspeicher einen weiteren Zugriff auf den Hauptspeicher (oder zumindest auf den TLB ) machen, um meine virtuelle Adresse in eine Hardwareadresse zu übersetzen (richtig?).

Angenommen, ich habe reichlich Arbeitsspeicher. Sollte der virtuelle Arbeitsspeicher daher nicht durch Deaktivieren dieses zusätzlichen Zugriffs auf den Arbeitsspeicher deaktiviert werden (da ich meine Adresse nicht mehr von virtuell in physisch umwandeln muss) und dadurch mein System beschleunigen?

-2
Virtueller Speicher wird nicht immer verwendet phuclv vor 5 Jahren 2
@phuclv Aber selbst wenn es nicht verwendet wird, muss die MMU die Adresse noch übersetzen, oder? appa yip yip vor 5 Jahren 0
Sie können den virtuellen Speicher nicht deaktivieren. So einfach ist das. Es ist ein Teil davon, wie Prozesstrennung funktioniert und was nicht. Daniel B vor 5 Jahren 4
Ja, die MMU übersetzt immer Adressen, da kein Betriebssystem verwendet wird, da DOS die tatsächlichen physischen Speicheradressen verwendet. zymhan vor 5 Jahren 2
Dies ist eine ausgezeichnete Frage für Ihren Professor. Sie können mehrere Semester am College verbringen, um herauszufinden, wie unterschiedliche Betriebssysteme mit virtuellem Speicher umgehen. Christopher Hostage vor 5 Jahren 2
„… Warum das Deaktivieren des virtuellen Speichers die Leistung meines Computers nicht verbessert?“ In „Ye Olden“ Tagen von [Connectix RamDoubler] (http://www.ambrosiasw.com/Ambrosia_Times/January_96/3.1HowTo.html) auf einem Mac Vielleicht würde das funktionieren. Aber nicht auf einem modernen Betriebssystem. JakeGould vor 5 Jahren 0
Mit "Virtueller Speicher" meine ich eigentlich die Seitendatei [Swapping, Paging, Segmentierung und virtueller Speicher auf der x86 PM-Architektur] (https://superuser.com/q/454747/241386). phuclv vor 5 Jahren 0
Kann jemand erklären, warum diese Frage abgelehnt wird? appa yip yip vor 5 Jahren 0

4 Antworten auf die Frage

7
Mokubai

Denn virtueller Speicher ist mehr als nur das Ausschalten der Auslagerungsdatei.

Sie haben einfach das Speichergerät entfernt, mit dem Ihr System den Speicher auf die Festplatte verlagern kann, und Sie können den virtuellen Speicher auf einem modernen Betriebssystem nicht "nur" deaktivieren.

Betriebssysteme verwenden virtuellen Speicher zum Erzwingen der Sicherheit, indem Anwendungen in ihre eigenen Adressräume aufgeteilt werden.

Durch das Zuweisen eines eigenen Adressraums für Anwendungen hat jede Anwendung Zugriff auf ihren gesamten Adressbereich, ohne dass andere Anwendungen um Speicherbereiche gekämpft werden müssen.

Speichertrennung und Schreibschutz beim Schreiben bedeuten, dass zwei Anwendungen dieselben Bibliotheken gemeinsam nutzen und fast denselben Satz von Code verwenden, jedoch vollständig voneinander geschützt sind. Ein Programm, das abstürzt oder etwas unternimmt, sollte nicht dazu führen, dass auch das andere Programm stirbt.

Ihr System verwendet immer virtuellen Speicher, da es eine Schlüsselkomponente in jedem modernen Betriebssystemdesign ist.

2
zymhan

Sie werden das Virtual Memory Management Ihres Betriebssystems (Windows, Mac oder Linux) nicht überlisten.

Das Betriebssystem speichert keine Daten in einer Seiten- / Auslagerungsdatei, sofern dies nicht unbedingt erforderlich ist. Sie sollten keinen Einfluss auf die Leistung haben, wenn eine Auslagerungsdatei aktiviert ist, da sie nur bei Bedarf im Hintergrund verwendet wird.

Wenn Ihr Computer die Seiten- / Auslagerungsdatei so oft trifft, dass Ihr Computer langsamer wird und das Entfernen nichts hilft, werden Ihre Anwendungen oder Ihr Betriebssystem nur abstürzen, wenn der Arbeitsspeicher knapp wird.

Durch das Deaktivieren der Seiten- / Auslagerungsdatei wird der virtuelle Speicher NICHT deaktiviert. Virtueller Speicher ist ein Speicheradressierungskonzept, das Paging / Swapping ermöglicht. Es wird jedoch unabhängig davon verwendet, ob Sie eine Auslagerungsdatei aktivieren oder nicht.

Ich möchte darauf hinweisen, dass Sie in Abhängigkeit von der genauen Auslastung tatsächlich eine Leistungsverbesserung in Windows feststellen können, indem Sie die Auslagerungsdatei entweder verkleinern oder vollständig deaktivieren. Windows verfügt über ein sehr aggressives VM-Subsystem, das die Tendenz hat, Dinge in die Auslagerungsdatei zu verschieben, wenn dies nicht erforderlich ist. In letzter Zeit wurde es deutlich besser, aber es ist immer noch aggressiver als Linux oder Mac. Austin Hemmelgarn vor 5 Jahren 0
1
LawrenceC

Warum kann der virtuelle Speicher die Leistung meines Computers nicht verbessern?

Wenn Sie dies in Windows tun, deaktivieren Sie die Seitendatei wirklich . Sie sagen dem Betriebssystem, dass es vorübergehend nicht mehr auf der Festplatte befindliche Seiten entfernen soll.

Dies kann Ihren Computer tatsächlich verlangsamen, da es Dinge enthält, die im RAM nicht sehr häufig verwendet werden, im Gegensatz zu Festplatten und bei Bedarf eingelagert.

Dies deaktiviert die MMU nicht. Die MMU wird zu jeder Zeit verwendet und benötigt, wenn das System im geschützten Modus ausgeführt wird, um die Prozesstrennung zu implementieren, die "NX" -Funktion, die verhindert, dass Daten auf einer Seite als Code ausgeführt werden, und andere Features.


Jeder Speicherzugriff wird langsamer sein als Funktionen auf dem Chip. Dies war eine der Überlegungen, als RISC-CPUs entwickelt wurden - ein paar Register auf dem Chip, damit weniger RAM auf den RAM-Speicher zugreifen kann.

Eine der Verbesserungen, die mit AMD64-CPUs eingeführt wurden, war das Hinzufügen von Registern. Dies bedeutet, dass Sie ohne RAM als Scratchpad mehr tun können. Moderne CPUs verfügen auch über eine Reihe sehr breiter SIMD / AVX / EVEX-Register. Es gibt viele Nicht-RAM-Optionen für die Berechnung auf modernen x86-CPUs.

Und falls nicht deaktiviert, werden CPU-RAM-Zugriffe ohnehin zuerst den internen L1-Cache nutzen, was sehr schnell ist, da er sich buchstäblich auf demselben Chip befindet wie die CPU.

Jede Geschwindigkeitszunahme, die Sie durch Deaktivieren der MMU / TLB haben, ist sehr gering und Sie können den Speicher nicht vor anderen Prozessen schützen.

1
harrymc

Intel-CPUs können in zwei Adressierungsmodi betrieben werden und können zwischen diesen wechseln:

Real-Modus

Der Real-Modus zeichnet sich durch einen segmentierten 20-Bit-Adressraum (der genau 1 MB adressierbaren Speicher bietet) und unbegrenzten direkten Softwarezugriff auf alle adressierbaren Speicher, E / A-Adressen und Peripheriegeräte aus. Der Real-Modus bietet keine Unterstützung für Speicherschutz-, Multitasking- oder Code-Privilegien.

Sicherheitsmodus

Der geschützte Modus, auch als geschützter virtueller Adressmodus bezeichnet, ist ein Betriebsmodus von x86-kompatiblen Zentraleinheiten (CPUs). Sie ermöglicht der Systemsoftware die Verwendung von Funktionen wie virtuellem Speicher, Paging und sicherem Multitasking, mit denen die Kontrolle über die Anwendungssoftware eines Betriebssystems erhöht wird.

Fazit : Moderne Betriebssysteme verwenden den Protected Mode. Nur der Kernel verwendet den Real-Modus, um direkt auf die Hardware zuzugreifen. Um den virtuellen Speicher auszuschalten, müssen Sie ein eigenes Betriebssystem schreiben, das die volle Leistung der CPU ohnehin nicht nutzen kann. Ich schlage vor, die Auslagerungsdatei erneut zu aktivieren, damit Windows normal funktionieren kann, da diese Datei keine Verbindung zum Adressierungsmodus der CPU hat.

Lesen Sie das Handbuch für Entwickler von Intel® 64 und IA-32 Architectures Software Combined Volume 1 und insbesondere den Abschnitt "Zurückschalten in den Adressmodus". Zurück zur Schule, Freund.