4-GB-Grenze
Die 4-GB-Grenze (auch 4-GiB-Grenze) bezeichnet die maximale Größe des Arbeitsspeichers, den ein Prozess unter einem 32-Bit-Betriebssystem direkt benutzen kann, ohne auf Segmentierungstechniken zurückzugreifen. Manchmal wird sogar von einer effektiven 3-GB-Barriere gesprochen, da weitere Einflüsse von Motherboard und I/O-Geräten, besonders die Größe des Video RAM, den verwendbaren Bereich auf typischerweise 2,9–3,5 GB einschränken.
Inhaltsverzeichnis |
Problembeschreibung [Bearbeiten]
Das Problem tritt z. B. bei x86-Prozessoren auf, die zur Adressierung von Daten im Arbeitsspeicher 32 Bit lange Wörter (unsigned Integer) verwenden. Durch diese Beschränkung ist es den betroffenen Prozessoren nicht möglich, mehr als 232 Byte, also 4 GB, anzusprechen. Diese Einschränkung gilt sowohl für den logischen, virtuellen, also den von Programmen ansprechbaren, als auch für den physischen Adressraum, den im System installierten Arbeitsspeicher. Selbst wenn der real installierte Arbeitsspeicher eines Computers kleiner als 4 GB ist, kann die 4-GB-Grenze auf einige Programme Auswirkungen haben, etwa auf Anwendungen, die große memory-mapped Dateien verwenden.
Der linear adressierbare Speicher kann praktisch nicht lückenlos mit RAM belegt werden, gängige Computerarchitekturen zweigen Adressraum für die Einblendung von System-ROM und IO-Bereichen ab, z. B. Onboard- und Erweiterungshardware wie Grafik- und Soundkarten. Im x86-Umfeld sind 2,0 bis 3,75 GB RAM üblicherweise nutzbar, die genauen Werte hängen vom Mainboard und dem Ausbau an internen Erweiterungskarten sowie von den BIOS-Einstellungen ab. Unter Windows kann ein einzelner 32bit-Prozess generell nicht mehr als 2 GB belegen, außer IMAGE_FILE_LARGE_ADDRESS_AWARE ist im Header der Anwendung aktiviert (dann sind bis zu 3 GB möglich auf einem 32bit-Windows, bzw. 4 GB auf einem 64bit-Windows).[1]
Problembehebung [Bearbeiten]
Die 4-GB-Grenze ist nicht vorhanden, wenn ein 64-Bit-System zum Einsatz kommt. Hier liegt die theoretische Grenze des Adressraums bei 264 Byte, also 16 Exabyte. Viele Prozessoren, wie die der AMD64-Architektur, verfügen über mehr als 32 aber weniger als 64 Adressleitungen und können somit weniger als 16 Exabyte Arbeitsspeicher ansprechen. Der physische Adressraum ist also auch hier wesentlich kleiner. Eine Problematik der Verbreiterung der Adressen ist, dass 64-Bit-Betriebssysteme nur 64-Bit Kernel-Treiber verwenden können, weil in diesem Fall der Betriebssystemkern 64 bittig implementiert ist und Kernel-Treiber direkt im Adressraum des Betriebssystemkerns ausgeführt werden, der eine Mischung von 32 und 64 Bit-Software in sich selbst nicht zulässt. Abgesehen von Kernel-Treibern gibt es unter aktuellen Betriebssystemen noch User Mode-Treiber, die dann im Prinzip normale Anwendungssoftware sind und je nach Betriebssystem auch als 32 Bit-Version funktionieren. Für Geräte wie Grafikkarten usw. sind solche Treiber derzeit aber nicht nutzbar. 64-Bit Kernel-Treiber waren nach der Einführung dieser Betriebssysteme selten und sind es heute für alte, spezielle und seltene Hardware immer noch. Diese Problematik betrifft praktisch hauptsächlich proprietäre Software, weil Hersteller insbesondere bei preiswerten Geräten wie Druckern, Scannern usw. Treiber nicht länger als unbedingt nötig pflegen und normalerweise kein Interesse haben, anderen die Pflege älterer Treiber zu überlassen. Grundsätzlich aber muss auch freie Software an 64-Bit angepasst sein, um korrekt zu funktionieren, mit einer einfachen Neukompilation der Software kann, muss es aber nicht getan sein. Ob eine Software für 64-Bit geeignet ist oder nicht, hängt also vollständig von der Software und nicht direkt ihrem Entwicklungsmodell ab, freie Software hat nur den theoretischen Vorteil, dass sie leichter angepasst werden könnte. Moderne 64-Bit-Betriebssysteme führen Anwendungen, die nur für 32-Bit kompiliert wurden, in aller Regel weiterhin aus, ihnen steht aber je nach Anwendung nur maximal 2 bis 4 GB Speicher zur Verfügung.
Unter 32-Bit-Systemen gibt es mit PSE36 und PAE Möglichkeiten, die 4-GB-Grenze zu überschreiten (das Limit von 2 GB oder 4 GB pro Prozess bleibt aber). Diese Prozessorerweiterungen vergrößern allerdings nur den physisch adressierbaren Speicher, jeder Prozess für sich kann weiterhin nur 4 GB Daten gleichzeitig adressieren. Unter Microsoft Windows existiert außerdem die Möglichkeit, über eine AWE genannte Schnittstelle physische Speicherseiten jenseits der 4-GB-Grenze in den logischen Adressraum des Prozesses einzublenden, womit ein 32-Bit-Prozess insgesamt mehr als 4 GB ansprechen kann. Allerdings erlauben nur einige spezielle Versionen von Windows 2000 und Windows Server 2003 die Verwendung von RAM jenseits der 4-GB-Grenze auf einem 32-Bit-System; die Verbraucher-Betriebssysteme Windows XP (ab SP2), Windows Vista und Windows 7 erlauben dies in ihren 32-Bit-Versionen gewollt nicht, um Inkompatibilitäten mit diversen Treibern von Fremdfirmen zu vermeiden. Für Normalanwender von Windows bleibt daher nur der Wechsel auf eine 64-Bit-Version des Betriebssystems als Problemlösung.
Weblinks [Bearbeiten]
- What Is 4GT?; Technologies Related to 4GT Artikel auf MSDN.com (englisch)