Werbung
Die meisten Computer werden heutzutage mit einer 64-Bit-Version von Windows und häufig nur minimalem RAM ausgeliefert. Dies stellt die Leistung dieser Systeme in Frage. Dies gilt insbesondere dann, wenn Benutzer ihre ältere 32-Bit-Software auf diesen neuen Computern ausführen möchten.
Was eine interessante Frage aufwirft. Machst du brauche mehr oder weniger RAM Wie viel RAM brauchen Sie wirklich?RAM ist wie ein Kurzzeitgedächtnis. Je mehr Sie Multitasking betreiben, desto mehr benötigen Sie. Finden Sie heraus, wie viel Ihr Computer hat, wie Sie das Beste daraus machen oder wie Sie mehr herausholen können. Weiterlesen um eine 32-Bit-Anwendung auf einem auszuführen 64-Bit-Version von Windows Was ist 64-Bit-Computing?Die Verpackung eines Computers oder einer Computerhardware ist mit Fachbegriffen und Abzeichen überfüllt. Eine der bekanntesten ist 64-Bit. Weiterlesen ? Diese Woche findet Bruce Epper es heraus.
Ein Leser fragt:
Stimmt es, dass das Ausführen von 32-Bit-Apps auf einem 64-Bit-Windows-System verbraucht?
1,5 mal mehr Speicher im Vergleich zum Ausführen der 32-Bit-App unter einem 32-Bit-Windows-Betriebssystem?
Antwort von Bruce:
Wir haben bereits die Vor- und Nachteile erörtert, wenn alles 64-Bit auf der ganzen Linie und einige davon beibehalten werden Effekte von "Mischen und Anpassen" Wie die Windows-Leistung von Hardware und Software beeinflusst wirdTheoretisch könnte 32-Bit-Software je nach Hardware-Setup das 64-Bit-Gegenstück übertreffen. 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 ohne zusätzliche Hilfe nicht ausführen. Sie unterscheiden sich einfach zu stark: von Zeigern und Datentypen bis hin zu Systemaufrufen (wie Programme die Ressourcen des zugrunde liegenden Betriebssystems verwenden). Sie benötigen eine Möglichkeit, 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 (IA64) -Systemen.
IA64-Systeme erfordern aufgrund der unterschiedlichen Prozessoranweisungen und Speicherseitengrößen einen vollständigen Emulator (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 des Kerns Windows-Kernelfunktionen), Abfangen von Kernelaufrufen und Ändern dieser, damit sie von den nativen 64-Bit-Funktionen von Windows verarbeitet werden können Kernel.
Auf x64 / IA64-Systemen werden 3 DLL-Dateien verwendet, um dies zu erreichen: wow64cpu.dll, wow64win.dll und wow64.dll. Ihre Funktionen bestehen darin, die Prozessoreigenschaften zu abstrahieren und Thunks bereitzustellen (Wir werden später darauf zurückkommen) in win32k.sys, das die "Fenster" -Funktionalität bereitstellt, und ntoskrnl.exe, das die Exekutive, den Kernel, den Speichermanager, enthält. Prozessplaner (nicht zu verwechseln mit dem Taskplaner, auf den über die Systemsteuerung zugegriffen werden kann) und andere Kernelemente des Betriebs System.
Ein Thunk ist eine Unterroutine (stellen Sie sich diese als eine Reihe von Anweisungen vor, die eine einzelne Aufgabe ausführen), mit der ein Programm eine gemeinsame Unterroutine oder Funktion im System ausführen kann.
In diesem Fall werden die Argumente aus dem Aufrufstapel des 32-Bit-Programms extrahiert, in ihre 64-Bit-Gegenstücke konvertiert und der 64-Bit-Systemaufruf ausgeführt. Nach der Rückkehr vom Aufruf werden die 64-Bit-Ergebnisse wieder in 32-Bit konvertiert und auf den Aufrufstapel des Programms zurückgeschoben, damit der Aufrufer sie verwenden kann.
Alle Thunking-Vorgänge werden aus zwei Gründen im Benutzermodus (mit eingeschränkten Berechtigungen) 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 werden die Auswirkungen auf die Leistung verringert, die beim Ausführen im Kernel-Modus (dem Modus, der von den wesentlichen Teilen des Betriebssystems verwendet wird) aufgrund des Overheads beim Umschalten auftreten würden Benutzermodus und Kernel-Modus und zurück.
Bei den Itanium-Systemen sind noch einige andere wichtige Unterschiede zu beachten. IA64-Systeme verwenden zwei zusätzliche Dateien. IA32exec.bin ist der x86-Softwareemulator und Wowia32x.dll bietet die Schnittstelle zwischen WoW64 und dem Softwareemulator.
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ügt außerdem über eine weitere DLL, apisetschema.dll, die in alle Prozesse geladen wird.
Wenn ein 32-Bit-Prozess gestartet wird, wird Wow64.dll geladen, von dem wiederum 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 neu geschrieben 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 sind, die nicht für das Win32-System vorhanden sind.
Jetzt könnten Sie versucht sein, sich die Dateigrößen anzusehen, sie zu addieren und diese als Grundlage für die Verwendung von zusätzlichem Speicher zu verwenden, aber Sie würden am Ende ungenaue Ergebnisse erzielen. Diese Dateien sind von Natur aus als gemeinsam genutzte Komponenten konzipiert. Daher lädt die erste Datei, für die eine DLL erforderlich ist, diese in den Speicher.
Nachfolgende Programme, die dieselbe DLL benötigen, laden nicht die gesamte Komponente in den Speicher. 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 unter 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-Prozess durchlaufen.
Nachdem beide Systeme gepatcht wurden, habe ich die Auslagerungsdatei auf beiden deaktiviert, um ein besseres Bild der Speichernutzung zu erhalten, indem sichergestellt wurde, dass der Arbeitsspeicher nicht auf die Festplatte ausgelagert werden konnte. Sobald dies abgeschlossen war, wurde LibreOffice 5.0.3.2 installiert.
Eine Kopie von Sysinternals Process Explorer Prozess-Explorer - Der leistungsstärkste Task-Manager-Ersatz [Windows]Seien wir ehrlich, der Windows Task-Manager ist nicht besonders gut geeignet, um die auf Ihrem Computer ausgeführten Prozesse zu verstehen und zu verwalten. Selbst unter Windows 8, wo es stark verbessert wurde, kann der Task-Manager nicht ... Weiterlesen wurde auch auf beiden Maschinen platziert. Dies ist das Tool, mit dem ich Informationen zur Speichernutzung gesammelt habe. Das Standard-Spalten-Setup wurde geändert, damit ich mir die Verwendung von Working Set und WS Private ansehen kann.
Diese Arbeitssatznummern geben die Menge an RAM an, die von den Programmen verwendet wird. Es wurde etwas komplizierter, indem es die von gemeinsam genutzten Bibliotheken verwendete Speichermenge widerspiegelte, selbst wenn sie bereits von einem anderen Prozess geladen wurden. Wenn Sie die gesamte Spalte hinzufügen, kann dies zu einer Gesamtsumme führen größer als installierter RAM. Der Arbeitssatz 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 uns die Gesamtsummen aller drei Prozesse ansehen, 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 und die Daten aus dem Prozess-Explorer exportiert werden. Mit Calc und Impress hatte ich eine 3,7-MB-XLS-Datei und eine 3,9-MB-PPTX-Datei geöffnet und die neue Speichernutzung aufgezeichnet. Die Ergebnisse sind in der folgenden Tabelle aufgeführt. Alle Daten sind in KB.
Die große Überraschung ereignete sich mit Impress. Ohne Dokument wurde auf dem 64-Bit-System 4,1% mehr RAM und 9,9% mehr RAM verbraucht. weniger mit dem Dokument geladen. Ich habe ein paar andere Präsentationen ausgegraben und mit allen ähnliche Ergebnisse erzielt. Das 64-Bit-System verbrauchte weniger RAM als das 32-Bit-System.
Benötigen die 64-Bit-Versionen von Windows mehr RAM als ihre 32-Bit-Gegenstücke, wenn 32-Bit-Apps ausgeführt werden? Im Allgemeinen ja.
Aber müssen Sie Ihren RAM aktualisieren? Wahrscheinlich nicht. Der Unterschied Ja wirklich ist nicht so massiv Es ist sicherlich nicht 1,5-mal anders.
Bruce spielt seit den 70er Jahren mit Elektronik, seit den frühen 80er Jahren mit Computern und beantwortet Fragen zu Technologien, die er die ganze Zeit weder benutzt noch gesehen hat. Er ärgert sich auch, wenn er versucht, Gitarre zu spielen.