32bit-oder-64bit

32Bit oder 64Bit Betriebssystem?

Die Entscheidung für 32 oder 64 Bit beim Betriebssystem ist je nach Anforderung zu treffen:

  1. Ausbau des Arbeitsspeichers (64Bit macht erst ab 4 GB Sinn)
  2. Treiber/Software: Gibt es für 64Bit Treiber für die Hardware? Unterstützt meine Software auch 64Bit?

Unterstützung der Betriebssysteme:

  1. Linux: Die Auswahl an Software ist für 32Bit (bezeichnet mit i386 oder i686) oder 64Bit (bezeichnet mit AMD64) ist nahezu gleich, da quelloffene Programme fast immer auch in 64Bit portiert sind, evtl. Probleme mit binären Treiber die nur in 32Bit vorliegen.
  2. Windows: Je nach vorhandener Lizenz, Treiber- und Stabilitätsprobleme bei fehlerhaften Drittanbietertreibern möglich. Ab Win7 müssen alle Treiber zertifiziert sein.

Auf 32Bit sind nicht volle 4 GB nutzbar, da dies zwar dem maximal möglichen Adressraum entspricht, dafür aber I/O-Erweiterungskarten (z. B. Grafikkarten) ihren Adressraum hier auch noch unterbringen müssen. Somit sind von den physikalischen 4 GB in der Praxis nur ca. 3,3 GB nutzbar.

Durch die Unterstützung des BIOS („memory remapping“ bzw. „Memory Remap feature“ oder PAE) kann dieser Adressraum oberhalb des physikalisch vorhandenen Speichers eingeblendet werden, Windows schaltet oft PAE automatisch ein um das NX-Bit (No eXecute) zu nutzen, andernfalls kann dies mit dem Bootparameter /PAE aktiviert werden.

Physical Address Extension (PAE, engl. für Erweiterung (der) physischen Adressierung) ist eine technische Erweiterung aus dem Gebiet der Rechnerarchitektur. Sie ermöglicht es x86-kompatiblen CPUs, mehr physischen Arbeitsspeicher anzusprechen als durch die 32-Bit-Wortbreite des Mikroprozessors festgelegt. Mit PAE sind bis zu 64 GB (236 Byte) Hauptspeicher adressierbar.

PAE wird bei Prozessoren (ab Intel Pentium Pro, AMD Athlon) eingesetzt, um mehr als 4 GB Arbeitsspeicher benutzen zu können. Dies ist möglich, da diese Prozessoren einen 36 Bit breiten Adressbus besitzen. Spezielle Erweiterungen in der Paging-Einheit der CPU sorgen dafür, dass 36-bittige physikalische Adressen generiert werden.

Der in einem Prozess bzw. einem Task nutzbare Speicher ist jedoch weiterhin auf 4 GB begrenzt, sofern man ein lineares Speichermodell („flat memory“) verwendet, da die verwendeten Adressregister nur 32 Bit breit sind.

Um PAE nutzen zu können, muss es vom Betriebssystem unterstützt werden. Aktuelle Linux-Versionen unterstützen uneingeschränkt PAE (ab Kernel 2.4.4; über Kernelconfig-Option). FreeBSD, OpenBSD (bisher nur in -current) und Solaris unterstützen PAE ebenfalls uneingeschränkt und adressieren den gesamten 64-GB-Adressraum. Bei den Microsoft-Betriebssystemen ist die Unterstützung je nach Lizenzversion größtenteils eingeschränkt, es stehen dann nicht immer die gesamten 64 GB zur Verfügung. Derzeit wird PAE von den Windows-Versionen Windows 2000 (Professional 4 GB, Advanced Server 8 GB, Datacenter Server 64 GB; über Boot-Option), Windows XP und Windows Vista (4 GB; über Boot-Option), Windows Server 2003 R2 (Standard Edition 4 GB, Enterprise Edition 32 GB, Datacenter Edition 64 GB; Boot-Option) unterstützt. Für die Address Windowing Extension müssen je nach Windows-Version eventuell zusätzliche Service Packs eingespielt werden.

Auf den meisten Rechnern mit Windows ist PAE trotz der Hauptspeicherbegrenzung aktiviert. Der Grund dafür liegt darin, dass nur mit PAE auch das auf vielen Prozessoren vorhandene NX-Bit genutzt werden kann.

Quelle des Abschnittes: Wikipedia

Windows x64 führt 32 Bit Programme durch eine Kompatibilitätsschicht (WOW64) aus. Im Taskmanager werden 32Bit-Programme mit **32 gekennzeichnet, installiert werden diese standardmäßig in C:\Programme (x86)\…. Ebenso werden Zugriffe von 32 Bit Programmen von Windows\system32 auf windows\SysWOW64 umgeleitet, ebenso werden die Klassen-IDs für Klassenbibliotheken je nach Programm umgeleitet: 32Bit-Programme sehen HKLM\Software\Wow6432Node\Classes\CLSID und bei 64Bit HKLM\Software\Classes\CLSID. Ein 64 Bit Programm darf keine 32 Bit COM-Objekte (DLL, OCX, …) laden.

Treiber (im kernel-mode) müssen vollständig in 64 Bit geschrieben sein und signiert sein, Treiber im user-mode (für Peripherie wie Drucker oder Scanner) dürfen unsigniert sein.

Virtueller Speicher unter Windows
32 Bit 64Bit
nutzbarer virt. Speicherraum 4 GByte 256 TByte
genutzter virt. Speicherraum 4 GByte 17,5 TByte
System-Bereich 2 (11)) GByte 9,5 TByte
User-Bereich 32 Bit-Prozess 2 (32)) GByte 2(43)) Gbyte
User-Bereich 64 Bit-Prozess - 8 TByte
Paged pool 470 MByte 128 GByte
Non-paged pool 256 MByte 128 GByte
System-Cache 1 GByte 1 TByte

siehe auch: Windows x64 – All the Same Yet Very Different, Part 6: COM, DLLs and Processes

Abschalten der Ausführung von 32bit ELF-Binärprogrammen:

echo ':32bits:M:0:\x7fELF\x01::/bin/echo:' > /proc/sys/fs/binfmt_misc/register

führt stattdessen „/bin/echo“ aus.


1) , 2)
mit /3 GB-Switch in der Boot.ini
3)
mit Option /LARGEADDRESSAWARE