Windows 64 - das ändert sich

26.04.2005 von Mike Hartmann
Die 64-Bit-Varianten von Windows XP und Server 2003 bieten mehr als nur eine Unterstützung für aktuelle AMD- und Intel-CPUs. Auch unter der Haube ändert sich einiges, was auf den ersten Blick nicht sofort deutlich wird.

Microsoft hat Kernel und Betriebssystem nicht nur auf die neuen Features der 64-Bit-Prozessoren angepasst. Der Softwarehersteller auch gleich die Gelegenheit genutzt, Altlasten über Bord zu werfen und einige nur noch aus Kompatibilitätsgründen beibehaltene Komponenten aus Windows zu entfernen.

So entfallen beispielsweise die Subsysteme DOS, OS/2 und POSIX. Diese Einschränkungen dürften sich in den meisten Umgebungen noch nicht sonderlich auswirken, allerdings kann der wegfallende Support für 16-Bit-Applikationen schon einige Probleme mit sich bringen.

Der Grund ist nicht der, dass viele Anwender noch solche Applikationen benutzen, sondern vielmehr der, dass viele Installations-Routinen fehlschlagen. Denn auch wenn sie 32-Bit-Programme installieren, starten sie oft zunächst einen so genannten 16-Bit-Stub. Das ist ein Miniprogramm, das die verwendete Betriebssystem-Version abfragen und bei einem 16-Bit-OS die Installation verweigern soll. Und genau dieser Bestandteil des Setup funktioniert nun nicht mehr (Windows 64 meldet ein ungültiges EXE-Format), so dass die Installation fehlschlägt. Zudem fragen einige Installationsroutinen die Windows-Version ab und kommen mit dem zurückgemeldeten Ergebnis nicht klar, so dass sie eine Fehlermeldung bringen.

Microsoft hat für gängige Installationsroutinen einen Wrapper eingebaut, der derartige Probleme umgehen soll, indem Windows den Aufruf einer solchen Setup-Routine erkennt und diese durch eine kompatible 32-Bit-Installations-Routine ersetzt. MSI-Pakete lassen sich auch weiterhin ohne Schwierigkeiten einrichten, da entsprechende Routinen im Betriebssystem das Paket lesen und installieren.

Neues in Windows 64

Zwar bringt Windows 64 eine spezielle 64-Bit-Version des Internet Explorer, allerdings auch weiterhin eine mit 32 Bit, da 32-Bit-Plug-ins nicht mit dem 64-Bit-IE funktionieren. Per Default wird die 32-Bit-Version des Internet Explorer gestartet, dies betrifft das Desktop Icon, die Schnellstartleiste und insbesondere jeglichen Klick auf URLs. Die 64-Bit-Version muss dezidiert über den Startknopf von Windows angesprochen werden.

Beide Versionen teilen sich die Favoriten, den Ordner für temporäre Dateien, den Verlauf sowie eine Reihe von Einstellungen wie Startseite, Sicherheitskonfiguration und Pop-up-Blocker. Damit ist ein schneller Wechsel zwischen den beiden Varianten möglich, sollte das notwendig sein.

Ein großer Nachteil von Windows 64 ist, dass alle Treiber komplett in 64-Bit sein müssen. Der Grund ist, dass Treiber im Kernelmode arbeiten und direkt auf den Kernel zugreifen. Eine Kompatibilitätsschicht würde nicht nur erhebliche Performance-Einbußen mit sich ziehen, sondern auch eine Reihe von Sicherheitslücken aufreißen. Vor dem Umstieg sollte man also überprüfen, ob es einen entsprechenden Treiber für dieses oder jenes Stück Hardware gibt. Die - derzeit noch recht kurze - Liste mit zertifizierten 64-Bit-Treibern findet sich in Microsofts Hardware Compatibility List (HCL).

Die Data Execution Prevention (DEP) ist eingeschaltet und lässt sich auch nicht per boot.ini ausschalten oder nur auf bestimmte Programme beschränken, wie es bei den 32-Bit-Versionen von Windows möglich ist.

32- und 64-Bit-Versionen von Windows auf derselben Maschine sind prinzipiell möglich, allerdings sollten sie unbedingt auf verschiedenen Partitionen residieren. Andernfalls gibt es beim 32-Bit-Windows massive Probleme mit 64-Bit-Anwendungen, die beispielsweise im Programme-Ordner liegen, da dieser von beiden Installationen geteilt wird.

WoW64

WoW64 löst das alte WoW (Windows on Windows) ab. So wie Letzteres auf den 32-Bit-Editionen von Windows dafür zuständig war, die Kompatibilität für alte 16-Bit-Anwendungen herzustellen, dient Ersteres dazu, 32-Bit-Programme auf dem 64-Bit-Windows laufen zu lassen.

Ganz so einfach, wie es sich anhört, ist das Ganze jedoch nicht. Der WoW64-Emulator arbeitet im Usermode und stellt eine Schnittstelle zur x86-Version der Ntdll.dll dar. Er besteht aus den folgenden DLLs:

Neben der 64-Bit-Version von Ntdll.dll sind das die einzigen 64-Bit-DLLs, die in einen 32-Bit-Prozess geladen werden dürfen.

Beim Start des Emulators lädt Wow64.dll die x86-Version von Ntdll.dll und startet die Initialisierung, die wiederum alle notwendigen 32-Bit-DLLs nachlädt, die sich bei einer Windows-64-Installation ebenfalls auf dem System befinden müssen. Bei den meisten dieser DLLs handelt es sich um exakte Kopien der Original-Windows-Binaries.

WoW64 - Datei- und Registry-Zugriff

Weitere Vorkehrungen muss WoW64 für Datei- und Registry-Zugriffe treffen. Insbesondere betrifft dies die COM-Schnittstellen und deren Registry-Einträge. So wird beispielsweise für 32-Bit-Applikationen ein separater Baum HKEY_LOCAL_MACHINE\\Software erzeugt. Nur einige Unterschlüssel von Software werden zwischen beiden Welten geteilt.

Bei Dateizugriffen gilt Folgendes: Auch wenn der Name anderes vermuten lässt, finden sich im Verzeichnis \\Windows\\system32 ausschließlich 64-Bit-Programme. Zudem haben so ziemlich alle DLLs und Programme denselben Namen wie unter 32-Bit-Windows. Dieses Verhalten zwingt WoW64 dazu, Zugriffe auf das Verzeichnis System32 zu verhindern, da ja eine 32-Bit-Applikation keine 64-Bit-DLL laden darf. "Konsequenterweise" finden sich die 32-Bit-DLLs im Verzeichnis \\Windows\\SysWOW64. Greift beispielsweise eine 32-Bit-Applikation auf \\Windows\\System32\\crypt32.dll zu, leitet WoW64 diesen Zugriff auf \\Windows\\SysWOW64\\crypt32.dll um.

Diese Verzeichnisumleitung gilt allerdings nicht für die Verzeichnisse drivers\\etc, spool, catroot und catroot2 unterhalb von System32, denn diese enthalten Informationen wie Zertifikate oder Einstellungen, die von beiden Systemen gebraucht werden.

Änderungen für 32-Bit-Programme

Viele 32-Bit-Programme profitieren indirekt von Windows 64. Zwar knappst die Zwischenschicht WoW64 etwas Leistung ab, dafür können Programme beispielsweise auf mehr Usermode-Speicher zurückgreifen. Beim 32-Bit-Windows müssen sich Kernelmode- und Usermode-Programme maximal 4 GByte teilen. Per Default sieht diese Aufteilung jeweils 2 GByte vor. Allerdings muss das Programm mit dem Flag LargeAddressAware übersetzt und gelinkt werden, um den zusätzlichen Speicher nutzen zu können.

Zusätzlich profitieren Programme von einem schnelleren Datentransfer, da mehr Daten pro Zyklus übertragen werden, und von einer größeren Anzahl an verfügbaren Kernel- und Window-Handles.

Trotz aller Rückwärts-Kompatibilität zu 32-Bit-Versionen von Windows funktionieren einige Programme unter Windows 64 nicht mehr. Das betrifft beispielsweise Antivirus-Programme, da diese direkt auf den System-Kernel zugreifen. Dasselbe Schicksal ereilt Dateisystemfilter.

Auch 32-Bit-Shell-Extensions funktionieren nicht mehr, weil der 64-Bit-Explorer keine 32-Bit-DLLs laden darf. Dies betrifft beispielsweise Programme, die zusätzliche Kontextmenüs für bestimmte Datei-Endungen hinzufügen. Man kann das allerdings umgehen, indem man die 32-Bit-Version der explorer.exe lädt:

\\windows\\syswow64\\explorer.exe /separate

Ebenso ergeht es Programmen, die eigene Control-Panels in der Systemsteuerung platzieren. Auch hier kann man die 32-Bit-CPL-Datei laden, indem man die korrespondierende 32-Bit-Version der control.exe startet:

\\windows\\syswow64\\control.exe file_name.cpl

Fazit

Mit der 64-Bit-Version von Windows holt man sich eine Menge mehr Leistungsfähigkeit ins Haus. Dies betrifft vor allem Server-Anwendungen, denn die haben zumeist einen erheblich höheren Speicherplatzbedarf. Allerdings muss man zunächst Einschränkungen bei der Hardware machen, denn es existieren bei weitem nicht so viele 64-Bit-Treiber wie für ein Windows mit 32 Bit. Die Migration will also gut geplant und vorbereitet sein.

Heimanwender sollten auf jeden Fall noch abwarten, bis sich herauskristallisiert, ob und inwieweit ihre existierende Hardware unterstützt wird. Und selbst dann ist noch fraglich, ob alle Anwendungen und insbesondere Spiele auf der neuen Plattform ohne Probleme laufen werden. (mha)

64-Bit-Versionen von Windows im Überblick

Die folgenden Tabellen geben einen kurzen Überblick über die unterstützten Speichergrößen von 64-Bit-Versionen im Vergleich zu den 32-Bit-Versionen von Windows XP und Windows Server 2003.

Windows XP

Adressraum

64-Bit Windows XP

32-Bit Windows XP

Virtual memory

16 TByte

4 GByte

Paging file

512 TByte

16 TByte

Paged pool

128 GByte

470 MByte

Nonpaged pool

128 GByte

256 MByte

System cache

1 TByte

1 GByte

RAM

128 GByte

4 GByte

Windows Server 2003

Edition

Prozessoren

RAM

Plattform

Web Edition

2

2 GByte

x86 (32-Bit)

Standard Edition

4

4 GByte

x86 (32-Bit)

Enterprise Edition

8

32 GByte

x86 (32-Bit)

Datacenter Edition

32

64 GByte

x86 (32-Bit)

Standard x64 Edition

4

32 GByte

x64 (64-Bit)

Enterprise x64 Edition

8

1 TByte

x64 (64-Bit)

Datacenter x64 Edition

64

1 TByte

x64 (64-Bit)

Enterprise 64-Bit Edition

8

1 TByte

Itanium (64-Bit)

Datacenter 64-Bit Edition

64

1 TByte

Itanium (64-Bit)