Bitte nachlesen:
http://msdn.microsoft.com/de-de/library/ms189334.aspx
Und wirf auch mal einen Blick auf die Grafik. Sie zeigt genau das, was ich erklärt habe.
Zitat:
Alle Betriebssystemversionen ab Windows 2000 Server, einschließlich Windows Server 2003, besitzen einen Parameter in Boot.ini, mit dem Anwendungen Zugriff auf 3 GB Prozessadressraum gewährt wird. Der Adressraum für den Kernelmodus wird dann auf 1 GB beschränkt.
Ich habe hier mal den wichtigen und von Dir vermutlich mißverstandenen Punkt unterstrichen.
Der "abgetrennte" Bereich ist Kernel-Mode-Speicher! Das hat erstmal nichts direkt mit "Windows" oder "System-DLLs" zu tun. Die allermeisten Windows-DLLs laufen nicht im Kernel, sondern im user mode. Treiber etwa brauchen Kernel-Speicher.
Graphik in der Wikipedia dazu.
Und? Schon mal ein Windows gesehen das versucht annähernd 1 GB an System-DLLs in einem 32-Bit Prozess zu laden?
Da Du mit 32-Bit-Prozess vermutlich eine normale Anwendung meinst - darein lädt man höchstens normale
Win32-Subsystem-DLLs, und ist damit zu 100% im Usermode. Natürlich greifen die letztendlich auch wieder auf untere Schichten zu, so daß irgendwo da auch Kernelspeicher verwendet wird. Aber das ist eher nutzdatenabhängig und nicht von der Größe der DLLs.
"Glücklicherweise" arbeitet Windows nur mit Ring 0 (kernel mode) und 3 (user mode), ich will gar nicht wissen wieviel Verwechslungsmöglichkeiten es gäbe, wenn 1 und 2 auch noch genutzt wären