Windows: 32Bit vs 64Bit

Windows: 32Bit vs 64Bit

Was ist eigentlich der Unterschied zwischen den 32Bit- und 64Bit-Versionen von Windows?

Ein großer Unterschied liegt in der Größe des adressierbaren Speichers. Doch.. entgegen der weit verbreiteten Meinung, daß man mit einem 32Bit Betriebssystem nur 4GB Speicher ansprechen könnte, ist alles ein wenig anders, als man denken könnte.

Speicher

Wie bei Microsoft steht, haben auch die 32Bit Varianten (zumindest die teureren Server-Varianten) einen deutlich größeren adressierbaren Speicherbereich als 4GB. Hier finden sich je nach Edition Versionen, die bis zu 128GB Speicher unterstützen – wohl gemerkt in einem 32Bit Umfeld. Ermöglicht wird das durch PAE (siehe auch diesen Artikel, wie man unter einem 32Bit Windows mehr nutzbaren Speicher erlangen kann). Dieser Mechanismus ähnelt nicht etwa dem (aus frühen DOS-Tagen evtl. bekannten) EMS, also einer Einblendung verschiedener Seiten, sondern bietet eine echte, direkte Adressierung der vorhandenen Seiten an.

Doch gibt es auch hier ein Limit: dieses kommt daher, daß die Verwaltungsstrukturen für den zusätzlichen Speicher vorgehalten werden müssen, und zwar (aus Effizienzgründen) in dem tatsächlich direkt adressierbaren Raum, diese sind also auf 4GB minus sonstige wichtige ständig benötigte Daten beschränkt. Daher kommt auch die Restriktion auf teilweise 64GB oder 128GB, da größerer insgesamt ansprechbarer Speicher automatisch in weniger direkt ansprechbarem Speicher resultiert.

64Bit Versionen bieten prinzipiell den Zugriff auf 4 Milliarden mal mehr Speicher. Die oft angegebenen 1TB oder 2TB maximaler Speicher orientieren sich daher rein daran, was die aktuelle Hardware in ihrem Maximalausbau zuläßt und nicht daran, was Betriebssystem (und Prozessor – zumindest theoretisch, weil er dann wohl doch nicht genug Adressleitungne hat) unterstützen würden.

Sowohl PAE 32Bit Versionen wie auch 64Bit Versionen verlieren übrigens keinen physikalischen Speicher durch z. B. eine Grafikkarte. Die kann den benutzbaren Speicher nämlich deutlich reduzieren.

Mehr zu dem Thema läßt sich bei Geoff Chappell oder auch in den Kommentaren bei Microsoft lesen.

Ordnerstruktur

Wer schon einmal – zumindest noch vor sehr wenigen Jahren – eine englischsprachige Software installiert hat, ist evtl. schon einmal darüber gestolpert, daß einige Programmierer (gibt es eine Welt außerhalb der USA?) den Programmpfad fest auf „C:Program Files” geklemmt haben. So hatte man dann schnell neben einem „C:Programme” Ordner für die deutschen Programmierer sowie alle, die das Betriebssystem (ordnungsgemäß) gefragt haben, wie denn der korrekte Programmpfad lauten sollte, noch einen weiteren Pfad „C:Program Files” durch alle Programmierer, die auch in kommerzieller Software auf fest verdrahtete Werte (gültig für die ganze bekannte Welt.. die USA :)) gesetzt haben.

Das ist dann auch Microsoft nicht verborgen geblieben, und so hatten auch deutsche Versionen von Windows Vista und Windows 7 bereits ein „C:Program Files” Verzeichnis, das dann zu einem „C:Programme” umgebogen wurde.

Dieses Spiel haben sie dann für 32Bit-Applikationen, die mit festen Verzeichnissen arbeiten, weitergetrieben.

So gibt es „C:Program Files” und „C:Program Files (x86)” sowie „C:WindowsSystem32” und „C:WindowsSysWOW64”. Wie sich das gehört ist die Benamung auf den ersten Blick völlig irreführend. Im System32 Ordner sind die 64Bit Dateien, im WOW64 Verzeichnis befinden sich die 32Bit Varianten. Zu erklären ist das allerdings einfach: WOW64 ist kurz für W32OW64, also Windows 32Bit on Windows 64Bit. WOW ist das Subsystem, das 32Bit Applikationen (je nach Prozessor direkt oder per Emulation) im 64Bit Umfeld laufen läßt.

Das gleiche gilt übrigens für die Registrierung (Registry), hier werden die Pfade auch so umgebogen, wie man es in einer 32bittigen englischen Version erwarten würde.

Die .net Frameworks (siehe Hanselmann) sind übrigens auch auf 64Bit Windows Versionen doppelt vorhanden, zusätzlich zur 64Bit Version auch noch in einer 32Bit Version.

Als Anwender merkt man davon wenig.

Sonstige Unterschiede im Prozessor und Geschwindigkeit

Teilweise bieten Prozessoren verbreiterte Verarbeitungseinheiten für Integer und Doubles an, was Berechnungen in einzelnen Fällen beschleunigen kann. Die größten Unterschiede kommen jedoch eher von den Befehlserweiterungen wie SSE2 (das ist allerdings bereits älter) und andere wie EM64T oder IVT für Virtualisierung. Diese bieten jedoch oft auch unter 32Bit gewisse Vorteile.

Besonders wichtig ist tatsächlich der zusätzliche zur Verfügung stehende Speicher, den man oft mit der teilweise recht sorglos programmierten Software heute auch dringend braucht, um Programme und Daten nicht so oft auslagern zu müssen (das bedeutet Zugriffe auf die Festplatte statt auf den Speicher, das ist deutlich langsamer und resultiert in einer merklichen Verzögerung).

Ein Wort an den .net-Programmierer

Ein großer Teil von .net-Code läuft sowohl unter 32Bit wie auch unter 64Bit, und muß dazu noch nicht einmal neu compiliert werden, darum kümmert sich die Runtime. Mehr dazu findet sich bei Microsoft – reiner managed .net Code, ohne Systemaufrufe fällt jedenfalls in diese Kategorie, alle anderen müssen kurz über ihren Code nachdenken, z. B. da, wo Pointer oder Handles verwendet werden (hier muß man auf einen IntPtr zurückgreifen).

Zusammenarbeit und Kompatibilität

64Bit- und 32Bit-Applikationen harmonieren übrigens nur bedingt gleichzeitig zusammen, da das 64Bit System und das 32Bit Subsystem relativ stark voneinander getrennt laufen. Das wird aber meistens nur Programmierer betreffen, die Interprozess-Kommunikation, native Systemfunktionen, Automation oder Ähnliches verwenden.

Auch Plugins werden in einen Prozess geladen, daher setzen sie zwingen voraus, daß der sie ladende Prozess kompatibel ist. Daher ist auch auf 64Bit Windows ein 32Bit Internet Explorer der Standardbrowser, weil eben die meisten Plugins für 32Bit geschrieben sind.

Separate Programme hingegen lassen sich ohne Probleme parallel betreiben, so kann z. B. das große Grafikprogramm in 64Bit laufen, während Office nach wie vor in 32Bit vor sich hin dümpelt.

Die meisten Treiber sind übrigens mittlerweile 64Bit-kompatibel, so daß einen Angst vor Komplikationen nicht mehr von der Installation eines 64Bit OS abhalten sollte. Tatsächlich sollte man heutzutage keinen Desktop-PC unter 8GB und auch keinen Notebook mit weniger als 4GB Speicher kaufen, und ein dazu passendes 64Bit OS verwenden. Alles andere macht nur selten einen Sinn.

Willkommen in der schönen neuen 64Bit Welt!
(Und willkommen in der Welt der vielen Cores! (Eine Erkenntnis, die bei vielen Softwarefirmen auch noch ankommen muß.))

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.