Können meine 32-Bit-Anwendungen bei einem 64-Bit-Betriebssystem 64-Bit-Speicher (> 3,5 GB) verwenden?
Wenn die App AWE-fähig ist, können sie einen Adressraum über 4 GB verwenden, obwohl dies weniger effizient ist als bei einer 64-Bit-App. Es ist sogar möglich, dass 32-Bit-Prozesse unter 32-Bit-Windows-Varianten auf mehr zugreifen, als der 32-Bit-Adressraum zulässt, wenn PAE aktiviert ist und der Prozess dies verwenden kann.
Ein einzelner 32-Bit - Prozess (die nicht AWE bewusst ist) ist in der Regel auf 3 Gb beschränkt (die erste Gb seiner virtuellen Adressraum für den Kernel im Zusammenhang Aktion reserviert ist) , aber wenn Sie mehrere Prozesse ausgeführt werden, dann werden sie in der Lage sein zu verwenden mehr in total (jeder kann bis zu 3 GB verwenden, sofern der gesamte Arbeitsspeicher dies zulässt), da die virtuellen Adressräume nicht gemeinsam genutzt werden.
Die Grenze , die pro-Prozess ist hilfreich in einer Unix-ähnlichen Umgebung , in den Dienste sind in der Regel eher Prozess beruhen, als Thread basierend (mehrere Threads in einem Prozess der Prozesse gemeinsame Nutzung von Ressourcen und damit einen einzigen 3Gb virtuellen Adressraum teilen) als häufiger Unter Windows (das Starten eines neuen Prozesses unter Windows ist recht teuer, daher werden Threads bevorzugt. In den meisten Unix-Umgebungen ist das Starten eines neuen Prozesses nicht viel ressourcenintensiver als das Starten eines neuen Threads) . Es ist nicht sehr hilfreich für einen Computer, auf dem nur SQL Server ausgeführt wird, da dies nur ein Prozess sein wird und daher die 3Gb-Grenze erreicht (einige Editionen können so konfiguriert werden, dass sie AWE- fähig sind, aber nicht alle) Diese Funktion soll in der nächsten Hauptversion entfernt werden .
Neben den 32-Bit-Prozessen, die insgesamt mehr als 3 GB verwenden können, kann das Betriebssystem auch nicht genutzten Speicher für das Zwischenspeichern von Datenträgern verwenden, sodass dies keine Verschwendung darstellt, vorausgesetzt, die Prozesse öffnen Dateien nicht auf diese Weise um dem Betriebssystem zu sagen, dass es sich nicht die Mühe machen soll, dies zu tun.
Wenn die Anwendung AWE verwendet , dann ja (obwohl dies nicht auf 64-Bit-Betriebssysteme beschränkt ist). Ohne diese Option ist der Prozess immer noch auf einen Adressraum von 4 GB beschränkt.
quelle
Sorta, je nachdem was du meinst.
Vorausgesetzt, Windows ...
Wenn das Betriebssystem 64-Bit ist, erhält ein 32-Bit-Prozess standardmäßig 2 GB virtuellen Adressraum für Benutzeradressen. Wenn der PE-Header der EXE-Datei mit dem Flag IMAGE_FILE_LARGE_ADDRESS_AWARE markiert ist, erhält der Prozess 4 GB vom Benutzer adressierbaren virtuellen Adressraum. In beiden Fällen entspricht der virtuelle Adressraum des Kernels den 64-Bit-Prozessen, da er von allen Prozessen gemeinsam genutzt wird. Außerdem haben 64-Bit-Prozesse, die das Flag IMAGE_FILE_LARGE_ADDRESS_AWARE nicht setzen, nur Zugriff auf 2 GB virtuellen Benutzeradressraum.
Die Informationen zu speziellen Boot-Flags, 3 GB / 3 GB-Switches oder / userva beziehen sich auf 32-Bit-Betriebssysteme und gelten nicht für 64-Bit-Windows.
Dies alles wird auf der Microsoft-Seite " Speicherbeschränkungen für Windows- Versionen" ausführlich beschrieben .
Bei der Antwort von @David Spillett wird noch ein weiterer Punkt angesprochen: Mehrere Prozesse, die alle auf 2 GB Speicherplatz beschränkt sind, können nach wie vor erhebliche Mengen an Arbeitsspeicher beanspruchen, sofern verfügbar, ebenso wie der Dateicache.
quelle
Ein 32-Bit-Prozess auf einem 32-Bit-Betriebssystem verfügt über einen Adressraum von 4 GB, von denen 2 GB vom Betriebssystem reserviert werden und 2 GB für den Prozess verfügbar sind.
Es gibt einen Schalter, der für das Betriebssystem festgelegt werden kann (/ 3 GB), der die für das Betriebssystem reservierte Menge in nur 1 GB ändert und dem Prozess 3 GB ermöglicht, ABER nur, wenn der Prozess sich selbst als große Adresse in den Flags als bekannt deklariert der ausführbaren Datei.
Auf einem 64-Bit-Betriebssystem erhält ein 32-Bit-Prozess 4 GB, wenn er sich großer Adressen bewusst ist, andernfalls 2 GB.
All dies gilt für nicht AWE-fähige Prozesse. Wenn der Prozess in der Lage ist, AWE zu verwenden, kann er, wie andere gesagt haben, einen großen Adressraum verwenden, aber weniger effizient als ein 64-Bit-Prozess.
PAE ermöglicht es einem 32-Bit-Betriebssystem, mehr als 4 GB RAM zu verwenden. Es weist jedoch Kompatibilitätsprobleme auf und wurde in XP von einem der Service Packs deaktiviert, sodass es nur auf Serverbetriebssystemversionen verfügbar ist.
quelle