Autor Thema: Mehr als 4GB RAM??  (Gelesen 5798 mal)

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« am: 30. October 2005, 16:18 »
Im PMode auf einer normalen x86-CPU kann man ja bekanntlich 4GB RAM ansprechen. Aber beispielsweise hier steht, dass die Windows 2003 Enterprise Edition 32GB RAM verwalten kann. Nur wie macht man das?

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 30. October 2005, 17:42 »
schau dir den aktuellen linux an, der kann auch bis zu 64 gb. aber unter normalen umständen funzt das sowieso nicht, handelsübliche mainboards akzeptieren eh nich mehr als 3 gb...
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #2 am: 30. October 2005, 18:48 »
Ich schätze mal, dass es sich dabei um einen Paging-Trick handeln wird. Also das 32GB virtueller Speicher zwar vom System verwaltet werden, es sich aber immer nur max 4 GB zur gleichen Zeit im Speicher befinden (auch max. 4GB pro Prozess).

MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #3 am: 30. October 2005, 18:49 »
Maximal 4GB gleichzeitig stimmt, max. 4 GB pro Prozess nicht. ;)

CPU-Seitig gibt es dafür PSE und das bessere PAE. Über diese solltest du dich informieren.
Desweiteren kann man unter Windows so ne Art EMS für mehr als 4GB pro Prozess benutzen.
*post*

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #4 am: 30. October 2005, 19:34 »
Soweit ich das gelsen hab machen PSE und PAE lediglich nen Mapping in den 4GB Adressraum. Wie soll es da möglich sein mit einem Prozess mehr als 4GB zu benutzen, wenn man nur 32Bit Adressen hat? Oder gehst du davon aus, dass man 64Bit Adressen benutzt im Prozess?

MM

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 30. October 2005, 21:49 »
Zitat von: [MM]
Ich schätze mal, dass es sich dabei um einen Paging-Trick handeln wird. Also das 32GB virtueller Speicher zwar vom System verwaltet werden, es sich aber immer nur max 4 GB zur gleichen Zeit im Speicher befinden (auch max. 4GB pro Prozess).


Also in dem Artikel geht es aber um physischen Hauptspeicher. Von virtuellem Speicher wird bei Systemanforderungen eigentlich nie gesprochen...

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #6 am: 30. October 2005, 22:47 »
Gut, da steht, dass die Enterprise Edition bis zu 32GB Speicher verwalten kann bei einem 32-Bit System UND das bis zu 8 32-Bit Prozessoren unterstützt werden. Man stelle sich also ein wildes Board mit 8 Prozessoren und 8*4GB Speicher vor und schon hat man 32GB!

MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #7 am: 31. October 2005, 09:40 »
Zitat von: [MM]
Soweit ich das gelsen hab machen PSE und PAE lediglich nen Mapping in den 4GB Adressraum. Wie soll es da möglich sein mit einem Prozess mehr als 4GB zu benutzen, wenn man nur 32Bit Adressen hat? Oder gehst du davon aus, dass man 64Bit Adressen benutzt im Prozess?

MM


Du darfst dir abwechselnd Speicherbereiche in deinen 4GB Raum mappen ...
*post*

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #8 am: 31. October 2005, 10:44 »
Gut, wenn du sagst, dass ein Prozess mehr als 4gb Speicher benutzen kann auf einer 32Bit Architektur, dann würde das ja bedeuten, dass dies ganz spezielle Anwendungen sind, die das mapping mit verwalten. Denn dann müste ich mir ja zusätzlich zur 32Bit Adresse noch merken, in welchem der 4GB Segmente sich meine Variable befindet. Deshalb glaub ich nicht, dass mehr als 4GB speicher pro Prozess möglich sind.

MM

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 31. October 2005, 13:39 »
Beim PAE bleibt der virtuelle Addressraum 4 GB groß, aber es können Speicherbereiche von über 4 GB in den Addressraum gemappt werden. Das mappen von physikalischen in virtuelle Addressen macht ja weiterhin der Kernel, die Anwendungen kriegen davon überhaupt nichts mit, oder sie benutzen Systemcalls, um Speicherbereiche zu mappen usw.

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #10 am: 31. October 2005, 13:59 »
Und wie soll dann eine Anwendung mehr als 4GB benutzen können, wie Legend sagt:
Zitat
Maximal 4GB gleichzeitig stimmt, max. 4 GB pro Prozess nicht. Winken


MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #11 am: 31. October 2005, 14:00 »
Zitat von: [MM]
Gut, wenn du sagst, dass ein Prozess mehr als 4gb Speicher benutzen kann auf einer 32Bit Architektur, dann würde das ja bedeuten, dass dies ganz spezielle Anwendungen sind, die das mapping mit verwalten. Denn dann müste ich mir ja zusätzlich zur 32Bit Adresse noch merken, in welchem der 4GB Segmente sich meine Variable befindet. Deshalb glaub ich nicht, dass mehr als 4GB speicher pro Prozess möglich sind.

MM


Nicht gleichzeitig, arg, das habe ich auch nie behauptet du Witzbold. Aber INSGESAMT, das heisst ganz was anderes ...
*post*

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #12 am: 31. October 2005, 15:03 »
Ok, also sind wir uns doch einig, dass nur max 4GB Pro Prozess/Anwendung gehen?
Zitat
Nicht gleichzeitig, arg, das habe ich auch nie behauptet du Witzbold.

Und wie meintest du es dann mit dem "max. 4 GB pro Prozess stimmt nicht"?

MM

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #13 am: 31. October 2005, 16:08 »
Also:
Der Virtuelle Adressraum für jeden Prozess beträgt maximal 4GB gleichzeitig, da dort mit 32Bit Adressen gearbeitet wird. Wenn die CPU kein PAE hat, ist das auch gleichzeitig die Grenze für den Physischen RAM, da das Paging dann auch nur 32Bit Adressen aktzeptiert. Hat die CPU allerdings PAE, dann kann man 32GB im Paging verwalten, da man bei PAE 36Bit Adressen angeben kann, für den Prozess bleiben dennoch nur 32Bit, er merkt garnicht wo er rumschreibt.
PSE hat mit dem ganzen nichts zu tun, das ermöglicht lediglich Pagegrössen in 2(nicht immer) und 4MB, was die den Speicherverbrauch von Paging verringert, da für ein 4MB eintrag 1024 4kb Einträge weniger gemacht werden müssen was wieder 4kb gespart hat, ausserdem ist die Verwendung von PSE Cachefreundlicher, da es für 4MB Einträge einen extra TLB gibt. Wenn man den Kernel in 4MB Pages unterbringt und man die Pages als Global markiert (sie werden dann beim cr3 wechsel nicht aus dem TLB entfernt) erreicht man schon einen Geschwindigkeitszuwachs, da die CPU statt im RAM in ihrem eigenen Cache nachschauen kann, was ja bekanntermassen schneller sein dürfte.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 31. October 2005, 17:06 »
Okay, PAE war ein guter Stichpunkt. Ich hab dazu noch das hier gefunden:
Zitat

Physical Address Extension

PAE ist eine technische Erweiterung von x86-kompatiblen 32-Bit-Architektur-Prozessoren (ab Intel Pentium Pro, AMD Athlon), um mehr als 4 GiB 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. einer Task nutzbare Speicher ist jedoch weiterhin auf 4 GiB begrenzt, da die verwendeten Adressregister nur 32 Bit breit sind.
Um PAE nutzen zu können, muss es vom Betriebssystem unterstützt werden. Derzeit wird PAE von den Betriebssystemen MS Windows 2000 Advanced Server (via Boot-Option), Linux ab 2.4.4 (via Kernelconfig-Option), FreeBSD und Solaris unterstützt.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #15 am: 31. October 2005, 17:10 »
Zitat von: [MM]
Ok, also sind wir uns doch einig, dass nur max 4GB Pro Prozess/Anwendung gehen?
Zitat
Nicht gleichzeitig, arg, das habe ich auch nie behauptet du Witzbold.

Und wie meintest du es dann mit dem "max. 4 GB pro Prozess stimmt nicht"?

MM


Ich kann durchaus mit einem Prozess z.B. 8GB an Daten in den Hauptspeicher laden, davon jedoch nur auf 4GB gleichzeitig direkt zugreifen..
Um auf die anderen 4 GB zuzugreifen muss ich das Mapping ändern.
*post*

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 01. November 2005, 18:20 »
Hmm, wenn 4gb des 4gb großen virtuellen Adressraumes der Anwendung gehören, wo liegt dann der Systemcode??? Richtig!!! Eine Anwendung/ein Prozeß hat nur maximal 2-3gb virtuellen Adressraum zur Verfügung, dafür kann sie/er Seiten aus dem gesamten Physischen Adressbereich, der auf 32bit Plattformen von Intel/AMD 36bit groß ist, also 64GB enthält, in seinen virtuellen Adressraum reinmappen, bis er halt keine virtuellen Adressen mehr zur Verfügung hat. OK ? ;-)
Agieren statt Konsumieren!

 

Einloggen