Benötigen Sie mehr Arbeitsspeicher, um 32-Bit-Programme unter 64-Bit-Windows auszuführen?

Benötigen Sie mehr Arbeitsspeicher, um 32-Bit-Programme unter 64-Bit-Windows auszuführen? / Fragen Sie die Experten

Die meisten Computer werden heutzutage mit einer 64-Bit-Version von Windows und oftmals mit minimalem RAM ausgeliefert. Dies stellt in Frage, wie gut diese Systeme funktionieren. Dies gilt insbesondere, wenn Benutzer ihre alte 32-Bit-Software auf diesen neuen Computern ausführen möchten.

Was wirft eine interessante Frage auf. Benötigen Sie mehr oder weniger RAM? Wie viel RAM benötigen Sie wirklich? Wie viel RAM benötigen Sie wirklich? RAM ist wie ein Kurzzeitgedächtnis. Je mehr Sie Multitasking betreiben, desto mehr brauchen Sie. Finden Sie heraus, wie viel Ihr Computer hat, wie Sie ihn optimal nutzen können oder wie Sie mehr erreichen. Weitere Informationen zum Ausführen einer 32-Bit-Anwendung unter einer 64-Bit-Version von Windows Was ist 64-Bit-Computing? Was ist 64-Bit-Computing? Die Verpackung eines Computers oder einer Computerhardware ist mit technischen Begriffen und Abzeichen überfüllt. Eine der prominenteren ist 64-Bit. Weiterlesen ? Diese Woche findet Bruce Epper heraus.

Ein Leser fragt:

Stimmt es, dass das Ausführen von 32-Bit-Apps auf einem 64-Bit-Windows-System verbraucht wird 1,5-mal mehr Speicherplatz im Vergleich zur Ausführung der 32-Bit-App unter einem 32-Bit-Windows-Betriebssystem?

Bruce's Antwort:

Wir haben zuvor die Vor- und Nachteile der Gesamtbeibehaltung aller 64-Bit-Funktionen und einiger Auswirkungen besprochen “Mischen und Matching” Auswirkungen von Hardware und Software auf die Windows-Leistung Auswirkungen von Hardware und Software auf die Windows-Leistung Theoretisch könnte 32-Bit-Software ihre 64-Bit-Entsprechung übertreffen, abhängig von der Hardwareeinrichtung. Klingt kompliziert? Wir sind hier, um Sinn zu machen und Ihnen zu helfen, die beste Leistung aus Ihrem System herauszuholen. Weiterlesen . Heute werden wir untersuchen, wie 32-Bit-Anwendungen unter 64-Bit-Versionen von Windows ausgeführt werden.

Ein 64-Bit-Windows-Betriebssystem kann ein 32-Bit-Windows-Programm nicht ohne zusätzliche Hilfe ausführen. Sie sind einfach zu unterschiedlich: von Zeigern und Datentypen bis zur Art und Weise, wie das System aufruft (wie Programme die Ressourcen des zugrunde liegenden Betriebssystems nutzen). Sie brauchen einen Weg, um sie kompatibel zu machen.

WoW64 verstehen

Windows verwendet das WoW64-Subsystem (Windows32 unter Windows64), um die Unterschiede auszugleichen. Es funktioniert effektiv als 32-Bit-Windows-Mini-Emulator auf x64-Systemen und als vollwertiger Emulator auf Itanium-Systemen (IA64).

IA64-Systeme erfordern einen vollständigen Emulator aufgrund der unterschiedlichen Prozessoranweisungen und Speicherseitengrößen (4 KB in x86 und x64, 8 KB in IA64). Da die x64-Prozessoren alle Anweisungen der x86-Prozessoren haben und dieselbe Speicherseitengröße verwenden, ist kein vollständiger Emulator erforderlich.

In beiden Fällen bietet WoW64 eine Schnittstelle zwischen dem 64-Bit-Windows-Kernel und der 32-Bit-Version von ntdll.dll (diese enthält eine Liste der Windows-Kernel-Kernfunktionen), die Kernel-Aufrufe abfängt und sie so bearbeitet, dass sie von ihnen verarbeitet werden können die nativen 64-Bit-Funktionen, die vom Windows-Kernel bereitgestellt werden.

Es gibt 3 DLL-Dateien, die auf x64 / IA64-Systemen verwendet werden, um dies zu erreichen: wow64cpu.dll, wow64win.dll und wow64.dll. Ihre Funktionen bestehen darin, die Prozessormerkmale zu abstrahieren und Thunks bereitzustellen (wir kommen später dazu) in win32k.sys, das die “Fenster” Funktionalität und ntoskrnl.exe, die den ausführenden Manager, den Kernel, den Speichermanager, den Prozessplaner (nicht zu verwechseln mit dem Taskplaner, auf den über die Systemsteuerung zugegriffen werden kann) und andere Kernelemente des Betriebssystems enthält.

Ein Thunk ist eine Unterroutine (stellen Sie sich diese als eine Reihe von Anweisungen vor, die eine einzelne Aufgabe ausführen), die es einem Programm ermöglicht, eine gemeinsame Unterroutine oder Funktion im System auszuführen.

In diesem Fall extrahiert es die Argumente aus dem Aufrufstack des 32-Bit-Programms, konvertiert sie in ihre 64-Bit-Gegenstücke und führt den 64-Bit-Systemaufruf aus. Bei der Rückkehr von dem Aufruf werden die 64-Bit-Ergebnisse zurück in 32-Bit konvertiert und auf den Aufrufstapel des Programms zurückgegeben, den der Aufrufer verwenden kann.

Alles Thunking wird aus zwei Gründen im Benutzermodus (der über eingeschränkte Berechtigungen verfügt) ausgeführt. Erstens werden die Auswirkungen von Fehlern im Code minimiert, die zu einer Sicherheitslücke, Datenbeschädigung oder einem Systemabsturz führen können, wenn sie im Kernelmodus ausgeführt werden.

Zweitens verringert es die Auswirkungen auf die Leistung, die sich ergeben würden, wenn der Kernelmodus (der Modus, der von den wesentlichen Teilen des Betriebssystems verwendet wird) aufgrund des zusätzlichen Aufwands beim Wechseln zwischen Benutzermodus und Kernelmodus und zurück ausgeführt wird.

Zurück zu den Itanium-Systemen gibt es einige andere wichtige Unterschiede. IA64-Systeme verwenden zwei zusätzliche Dateien. IA32exec.bin ist der x86-Software-Emulator und Wowia32x.dll stellt die Schnittstelle zwischen WoW64 und dem Software-Emulator bereit.

Ein 32-Bit-Prozess lädt diese Dateien sowie die 64-Bit-Version von ntdll.dll. Dies sind die einzigen 64-Bit-Binärdateien, die vor Windows 7 in einen 32-Bit-Prozess geladen werden können. Windows 7 und höher verfügen außerdem über eine andere DLL, apisetschema.dll, die in alle Prozesse geladen wird.

Wenn ein 32-Bit-Prozess gestartet wird, lädt er Wow64.dll, wodurch die 32-Bit-Version von ntdll.dll und alle erforderlichen 32-Bit-DLLs geladen werden % systemroot% \ SysWOW64. Die meisten dieser Dateien sind mit den Binärdateien auf einem 32-Bit-System identisch, obwohl einige umgeschrieben wurden, um sich unter WOW64 anders zu verhalten.

Wenn Sie sich die Liste der geladenen DLLs ansehen, sehen Sie, dass unter Win64 9 DLLs geladen wurden, die nicht für das Win32-System vorhanden sind.

Nun könnten Sie versucht sein, sich die Dateigrößen anzusehen, sie zusammenzurechnen und diese als Grundlage dafür zu verwenden, wie viel zusätzlicher Speicherplatz verwendet wird, aber Sie würden zu ungenauen Ergebnissen führen. Diese Dateien sind von Natur aus als gemeinsam genutzte Komponenten konzipiert. Daher lädt die erste Datei, die eine DLL erfordert, diese in den Arbeitsspeicher.

Nachfolgende Programme, die dieselbe DLL erfordern, laden nicht die gesamte Komponente in den Arbeitsspeicher. Sie erhalten einen Zeiger auf die bereits geladene Komponente und weisen den zusätzlichen Elementen, die in den Prozess geladen werden, RAM zu.

Unser Testaufbau

Um zu sehen, was los ist, habe ich zwei virtuelle Maschinen mit Windows 7 Ultimate mit jeweils 2 GB RAM eingerichtet. Eine davon ist die 32-Bit-Version und die andere ist 64-Bit. Beide haben genau den gleichen Installations- und Patch-Vorgang durchlaufen.

Nachdem beide Systeme gepatcht wurden, habe ich die Auslagerungsdatei für beide deaktiviert, um ein besseres Bild der Speicherauslastung zu erhalten, indem sichergestellt wird, dass der Arbeitsspeicher nicht auf die Festplatte ausgelagert werden kann. Nachdem dies abgeschlossen war, wurde LibreOffice 5.0.3.2 installiert.

Eine Kopie des Prozess-Explorers von Sysinternals Process Explorer - Der leistungsfähigste Task-Manager-Ersatz [Windows] Prozess-Explorer - Der stärkste Task-Manager-Ersatz [Windows] Um ehrlich zu sein, der Windows Task-Manager ist nicht besonders gut geeignet, um die laufenden Prozesse zu verstehen und zu verwalten auf deinem Computer. Selbst unter Windows 8, wo es viel verbessert wurde, kann der Task-Manager nicht in die Nähe des… Read More wurde auch auf beiden Computern gestellt. Dies ist das Werkzeug, mit dem ich Informationen zur Speichernutzung sammelte. Das Standard-Spalten-Setup wurde geändert, sodass ich die Verwendung des Working Set und des WS Private überprüfen konnte.

Diese Arbeitssatznummern spiegeln die von den Programmen verwendete RAM-Menge wider. Es wurde ein wenig komplizierter, da der Speicherbedarf der gemeinsam genutzten Bibliotheken berücksichtigt wurde, auch wenn sie bereits von einem anderen Prozess geladen wurden. Wenn Sie also die gesamte Spalte hinzufügen, ist es möglich, eine Summe zu erhalten größer als der installierte RAM. Das Arbeitsset ist immer noch das beste Maß dafür, wie viel Speicher für einen Prozess benötigt wird.

Die Prozesse, die wir untersuchen, stehen auch nicht alleine da. Die verschiedenen LibreOffice-Programme starten einen weiteren Prozess, soffice.exe, der einen weiteren Prozess, soffice.bin, ausführt. Wir müssen die Gesamtzahlen aller drei Prozesse betrachten, um die effektive Speichernutzung jedes Programms zu ermitteln.

Für den ersten Test habe ich einfach Writer, Calc und Impress einzeln geöffnet, um zu sehen, wie viel Speicher sie verbrauchen, ohne dass Daten geladen werden, und die Daten aus dem Process Explorer exportiert werden. Mit Calc und Impress hatte ich jeweils eine 3,7 MB .xls-Datei und 3,9 MB .pptx-Datei geöffnet und die neue Speicherbelegung aufgezeichnet. Die Ergebnisse sind in der folgenden Tabelle dargestellt. Alle Daten sind in KB.

Die große Überraschung ereignete sich mit Impress. Ohne ein Dokument wurden 4,1% mehr RAM auf dem 64-Bit-System und 9,9% Weniger mit dem Dokument geladen. Ich habe ein paar andere Präsentationen ausgegraben und hatte bei allen ähnliche Ergebnisse. Das 64-Bit-System verbrauchte weniger RAM als das 32-Bit-System.

Benötigen die 64-Bit-Versionen von Windows daher mehr Arbeitsspeicher als ihre 32-Bit-Pendants, wenn 32-Bit-Apps ausgeführt werden? Im Allgemeinen ja.

Aber müssen Sie Ihren RAM aktualisieren? Wahrscheinlich nicht. Der Unterschied Ja wirklich ist das nicht massiv. Es ist sicherlich nicht 1,5 Mal anders.

Erfahren Sie mehr über: 64-Bit, Computerspeicher, Windows.