Ich würde hier nochmal eine schöne Erklärung aus dem PCWelt Forum zitieren. Damit sollten keine Fragen offen bleiben.
Das ist eigentlich ganz einfach. Ca. 1980 hat man sich darauf festgelegt, dass der IBM Compatible PC auf seine Hardware wie auf den Arbeitsspeicher zugreift (nennt sich Memory Mapping - die Register der integrierten Controller und Chips werden in den normalen Speicher eingeblendet).
Der Vorteil dabei ist, dass man die verbaute Hardware ohne große Verrenkungen einstellen/programmieren kann - was bei der Treiberprogrammierung recht praktisch ist. Der Nachteil ist, dass man auf den überlagerten/ausgeblendeten Speicher nicht mehr einfach zugreifen kann - die Zugriffe landen ja in den Registern der Chips.
Die Mappings landen traditionell jenseits der 2 Gb-Adress-Marke. 1980 war man nämlich davon überzeugt, dass niemand jemals so arg viel Speicher brauchen oder gar verbauen würde.
Öffnet man den Gerätemanager und stellt die Ansicht auf Ressourcen nach Typ findet man diese Memory Mappings unter Arbeitsspeicher. Die erste "höhere" Adresse markiert den Beginn des überlagerten/weggemappten Rams. Bei mir ist das die Adresse 0xB7790000. Bemüht man z.B. den Windows Rechner (in der wissenschaftlichen Einstellung) und rechnet das aus dem hexadezimalen Format ins dezimale um, kommt 3078160384 heraus. Das ist der maximale Speicher, (in Bytes) den mein WinXP
direkt ansprechen kann. Das sind 2,86 gb - genau der Wert wird auch in den Systemeigenschaften angezeigt:
http://imageshack.us/scaled/landing/842/ramnz.png
64bit Betriebssysteme wenden übrigens den Mapping Trick nochmal auf den eigentlich unzugänglichen Speicher an: er wird an Ende des verbauten Rams hinten dran gemapped.
Ich hab die Rechtschreibung mal auf den "aktuellen Stand" gebracht.