„4-GB-Grenze“ – Versionsunterschied

[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
nicht das einzige Problem; betrifft nur proprietäre Software
Aktualität, vgl. Disk
Zeile 2: Zeile 2:


== Problembeschreibung ==
== Problembeschreibung ==
Das Problem tritt z.&nbsp;B. bei [[x86-Prozessor]]en auf, die zur Adressierung von Daten im [[Arbeitsspeicher]] 32 Bit lange [[Datenwort|Wörter]] (unsigned [[Integer (Datentyp)|Integer]]) verwenden. Durch diese Beschränkung ist es den betroffenen Prozessoren nicht möglich, mehr als 2<sup>32</sup> [[Byte]], also 4&nbsp;GB, anzusprechen. Diese Einschränkung gilt sowohl für den logischen, [[Virtuelle Speicherverwaltung|virtuellen]], also den von Programmen ansprechbaren, als auch für den physischen [[Adressraum]], den im System installierten Arbeitsspeicher. Die meisten der im Desktopbereich eingesetzten Computer verwenden heute 32 Bit und sind so von der 4-GB-Grenze betroffen. 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 Mapping|memory-mapped]] Dateien verwenden.
Das Problem tritt z.&nbsp;B. bei [[x86-Prozessor]]en auf, die zur Adressierung von Daten im [[Arbeitsspeicher]] 32 Bit lange [[Datenwort|Wörter]] (unsigned [[Integer (Datentyp)|Integer]]) verwenden. Durch diese Beschränkung ist es den betroffenen Prozessoren nicht möglich, mehr als 2<sup>32</sup> [[Byte]], also 4&nbsp;GB, anzusprechen. Diese Einschränkung gilt sowohl für den logischen, [[Virtuelle Speicherverwaltung|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 Mapping|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.&nbsp;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 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). <ref>http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx</ref>
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.&nbsp;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 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). <ref>http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx</ref>


== Problembehebung ==
== Problembehebung ==
Heute werden auch im Desktop-Bereich [[64-Bit-Architektur|64-Bit]]-Systeme angeboten, die zusammen mit einem 64-Bit-Betriebssystem keine Begrenzung des Hauptspeichers auf 4 GB aufweisen. Hier liegt die theoretische Grenze des Adressraums bei 2<sup>64</sup> Byte, also 16 [[Byte#Größenunterschiede_zwischen_Dezimalpräfix_und_Binärpräfix|Exabyte]]. Viele Prozessoren, wie die der [[AMD64]]-Architektur, verfügen über mehr als 32 aber weniger als 64 [[Adressleitung]]en 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-Treiber verwenden können. 64-Bit-Treiber waren nach der Einführung dieser Betriebssysteme selten und sind es heute für alte, spezielle und seltene Hardware immer noch. Außerdem können die Anwendungen, sofern sie nicht speziell für 64-Bit-Umgebungen kompiliert wurden, weiterhin nur 4 GB verwenden, da die internen Adressen weiterhin 32 Bit lang sind. Diese Problematik ist ausschließlich bei [[Proprietäre Software|proprietärer Software]] relevant.
Die 4-GB-Grenze ist nicht vorhanden, wenn ein [[64-Bit-Architektur|64-Bit]]-System zum Einsatz kommt. Hier liegt die theoretische Grenze des Adressraums bei 2<sup>64</sup> Byte, also 16 [[Byte#Größenunterschiede_zwischen_Dezimalpräfix_und_Binärpräfix|Exabyte]]. Viele Prozessoren, wie die der [[AMD64]]-Architektur, verfügen über mehr als 32 aber weniger als 64 [[Adressleitung]]en 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-Treiber verwenden können. 64-Bit-Treiber waren nach der Einführung dieser Betriebssysteme selten und sind es heute für alte, spezielle und seltene Hardware immer noch. Außerdem können die Anwendungen, sofern sie nicht speziell für 64-Bit-Umgebungen kompiliert wurden, weiterhin nur 4 GB verwenden, da die internen Adressen weiterhin 32 Bit lang sind. Diese Problematik ist ausschließlich bei [[Proprietäre Software|proprietärer Software]] relevant.


Unter 32-Bit-Systemen gibt es mit [[PSE36]] und [[Physical Address Extension|PAE]] Möglichkeiten, die 4-GB-Grenze zu überschreiten. 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 [[Address Windowing Extension|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 [[Microsoft Windows 2000|Windows 2000]] und [[Microsoft Windows Server 2003|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.
Unter 32-Bit-Systemen gibt es mit [[PSE36]] und [[Physical Address Extension|PAE]] Möglichkeiten, die 4-GB-Grenze zu überschreiten. 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 [[Address Windowing Extension|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 [[Microsoft Windows 2000|Windows 2000]] und [[Microsoft Windows Server 2003|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.

Version vom 13. Dezember 2011, 15:59 Uhr

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.

Problembeschreibung

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 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

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-Treiber verwenden können. 64-Bit-Treiber waren nach der Einführung dieser Betriebssysteme selten und sind es heute für alte, spezielle und seltene Hardware immer noch. Außerdem können die Anwendungen, sofern sie nicht speziell für 64-Bit-Umgebungen kompiliert wurden, weiterhin nur 4 GB verwenden, da die internen Adressen weiterhin 32 Bit lang sind. Diese Problematik ist ausschließlich bei proprietärer Software relevant.

Unter 32-Bit-Systemen gibt es mit PSE36 und PAE Möglichkeiten, die 4-GB-Grenze zu überschreiten. 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.

Einzelnachweise

  1. http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx