2-GByte-Grenze

Stimmt es, dass 32-Bit-Anwendungen unter Windows nicht mehr als 2 GByte virtuellen Speicher nutzen können?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 3 Min.

Stimmt es, dass 32-Bit-Anwendungen unter Windows nicht mehr als 2 GByte virtuellen Speicher nutzen können?

Grundsätzlich schon, aber es gibt Ausnahmen. Normalerweise teilen die 32-Bit-Versionen von Windows 2000, XP und Vista jedem Programm höchstens einen Adressraum von 231 Byte Größe zu, also 2 GByte. Einige spezielle 32-Bit-Anwendungen können jedoch unter manchen 32-Bit-Windows-Versionen bis zu 3 GByte RAM nutzen und unter x64-Windows bis zu 4 GByte.

Damit Anwendungen unter den 32-Bit-Server-Versionen von Windows 2000 und 2003 sowie Windows XP Professional mit Service Pack 2 bis zu 3 GByte virtuellen Adressraum erhalten, dient die Boot-Option /3GB in der boot.ini-Datei:

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT= "Microsoft Windows XP Professional" /fastdetect /3GB

Unter Vista muss man die Boot Configuration Data (BCD) editieren:

BCDEDIT /Set IncreaseUserVa 3072

Die Vergrößerung des UserVA verkleinert den Adressraum des Windows-Kernels, was bei den genannten 32-Bit-Windows-Versionen zu Problemen führen kann. Laut Microsofts Knowledge Base lassen sich möglicherweise einige Treiber nicht mehr laden oder Windows verweigert sogar den Start. Manche dieser Pannen behebt eine leichte Verkleinerung des User-Mode-Adressbereichs, wozu ein zusätzlicher boot.ini-Schalter dient: Mit /Userva=2900 beispielsweise schrumpft der maximale Applikationsadressraum von 3072 auf 2900 MByte. Bei Vista stellt man die Größe des User-Mode-Adressbereichs mit dem Set-Befehl direkt in Megabyte ein.

Von mehr als 2 GByte Adressraum profitieren ausschließlich solche 32-Bit-Applikationen, die dafür programmiert wurden. Außerdem müssen sie mit der Compiler-Option /LargeAddressAware übersetzt worden sein, denn sonst teilt ihnen Windows trotzdem nur 2 GByte zu. Mit den Entwickler-Tools Imagecfg.exe (aus dem Resource Kit Supplement zu Windows 2000 Server) oder Ebitbin.exe (aus Microsoft Visual Studio 2005 ab Standard Edition) soll sich die LargeAddressAware-Kennung auch bei fertigen Programmen ändern lassen.

Welche 32-Bit-Programme tatsächlich mehr als 2 GByte RAM adressieren können, erfährt man nur selten. Microsoft etwa beschreibt das für Exchange Server 2000 sowie SQL Server 2000/2005, laut Adobe (TechNote 320005) kann Photoshop ab Version CS2 bis zu 3 GByte Speicher nutzen. Wer mehr als 2 GByte RAM in seinen PC einbauen will, sollte zudem im Hinterkopf behalten, dass der I/O-Adressraum von Erweiterungskar-ten normalerweise unterhalb der 4-GByte-Grenze liegt und dort Adressen belegt – in vielen Rechnern sind nicht wesentlich mehr als 3 GByte nutzbar (siehe c't 4/07, S. 176), manchmal sogar weniger. (ciw) (ciw)