PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2^32 sind 2GB oder etwa nicht?


ESAD
2007-11-20, 12:52:45
Mit einem 32 Bit prozessor kann man 2Gb speicher addressieren, sagt man zumindest, und soweit ich weiß ist da auch kein fehler in der rechnung..... aber wieso kann ich:

Einen virtuellen speicher anlegen mit beliebiger Größe? (mein "rekord" war dass eine Anwendung 19GB virtuellen Speicher belegt hat)

4 Gb ram einbauen und es wird mehr als 2 Gb Ram erkannt? (Ja ich weiß dass ein programm nur 2 Gb verwenden kann)

4Gb ram einbauen und ein Teil des addressierabren Bereichs wird von den bereits eingebauten Geräten u. A. die Grafikkarte belegt? (der Prozessor muss ja auf jeden Speicher auch der der Grafikkarte zugreifen können?)

Wenn ich nur 2GB addressieren kann wieso funktionierte dann das oben angeführte?

Gast
2007-11-20, 12:59:52
Also bei mir sind das immer noch 4294967296 Bytes. ;)

Außerdem ist das keine physikalische Grenze - die 2 GB - die Windows uns auferlegt. Das ist ne Betriebssystemsache.

Man hat bei Microsoft absichlich den Bereich auf 2 GB begrenzt um Probleme vorzubeugen, wenn z.B. viele Komponenten verbaut sind.

Von den 4 GB werden in der Regel 2 GB für Anwendungen und 2 GB für den Kernel reserviert. Diese Belegung ist nicht fix und ließe sich von Microsoft oder mit dem /3 GB Schalter ändern.

Außerdem ist es möglich weit mehr als 4 GB anzusprachen, dank PAE (http://de.wikipedia.org/wiki/PAE). Soweit ich weiß, wird dies von Windows XP Home/Pro aber nicht unterstützt. Von Windows-Server etc. dagegen schon.

ESAD
2007-11-20, 13:11:21
Ok denkfehler meinerseits... bleibt aber trotzdem noch das problem wieso man eben mit pae (mein xp pro kanns) und wieso man bei virtuellen speicher mehr addressieren kann?

Gast
2007-11-20, 13:15:29
(mein xp pro kanns)

Es dürfte trotzdem beschränkt sein, sonst hättest du auch 8 GB einbauen können und die zur Verfügung...

http://de.wikipedia.org/wiki/Address_Windowing_Extension

Gast
2007-11-20, 22:17:21
mit 32bit kann man 4GiB adressieren, ich schreibe bewusst nur 4GiB und nicht 4GiB an RAM, weil eben auch noch andere sachen adressraum benötigen.

weiters bekommt unter windows (und auch anderen betriebssystemen die im protected-modus arbeiten) jeder prozess seinen eigenen virtuellen adressraum. standardmäßig hat unter windows jeder prozess allerdings nur 2GiB für eigene zwecke zur verfügung, was allerdings wie schon erwähnt eine reine limitierung des betriebssystems ist (die sich auch umgehen lässt)

da jeder prozess seinen eigenen adressraum bekommt können natürlich insgesamt deutlich mehr als 4GiB an speicher belegt sein. windows-nt unterstützt zwar PAE, wobei allerdings WinXP-Home/Pro nur den bereich bis 4GiB benutzen können und deshalb auch maximal 4GiB abzüglich den durch diverse hardware belegten bereich nutzen (ich weiß jetzt nicht wie die situation bei Vista32 ist)
insgesamt können alle prozesse zusammen natürlich deutlich mehr speicher belegen, wobei natürlich nur 3,xxGiB in den physikalischen speicher passen und der rest ausgelagert werden muss.

ShadowXX
2007-11-21, 00:00:03
Man sollte allerdings erwähnen, das Programme die PAE benutzen wollen extra dafür geschrieben sein müssen. PAE ist kein Automatismus, auch unter den großen Servern nicht (der Standard 32Bit-Server unterstützt auch nur 4GB).

ESAD
2007-11-21, 09:46:34
aber wie funktioniert das dan mit dem virtuellen speicher? für den dürften ja doch gar keine adressen mehr übrig sein? u
funktioniert dass dann über pae?

BlackBirdSR
2007-11-21, 11:05:05
aber wie funktioniert das dan mit dem virtuellen speicher? für den dürften ja doch gar keine adressen mehr übrig sein? u
funktioniert dass dann über pae?

WindowsNT (XP,Vista etc) legt für jeden Prozess einen eigenen virtuellen Adressraum von 4GB an. 2GB frei verfügbar für den Prozess, 2GB für den Kernel und sonstige wichtige Bercieh.

Du kannst also theoretisch hunderte von Prozessen am Laufen haben, die alle einen 4GB Adressraum haben. Das ist der Vorteil an Virtuellen Adressen. Diese werden vom System erst auf die physikalischen RAM-Adressen übersetzt wenn Zugriffe nötig sind. So kommen sich die Prozesse nicht in die Quere.

Die Page-File dient dazu, Daten auszulagern, wenn der physikalische Speicher zu klein wird. Sie wird auch über virtuelle Adressen betrieben und der Trick ist das Einblenden von Speicherfenstern. Es werden also jeweilsSpeicherfenster von ein paar KB Größe für das System eingeblendet. So muss nicht die ganze Page-File adressiert werden. Es gibt also weiterhin genug Adressen.

PAE erhöht nicht die Anzhal an virtuellen Adressen, sondern erlaubt der CPU mehr physikalischen Speicher zu adressieren. Das hat zur Folge, dass Windows auch hier den zusätzlichen Speicher (wie die Page-FIile) über Adressen einblenden muss. Daher ist die Sache etwas langsamer und für viele normale Zwecke einfach nicht brauchbar.

Das ganze Problem löst sich mit 64Bit-Systemen von AMD/Intel und deren 40/48Bit bzw 52/64Bit physikalischer/virtueller Adressierung.

Gast
2007-11-21, 11:18:21
aber wie funktioniert das dan mit dem virtuellen speicher?


jeder prozess hat für sich einen eigenen virtuellen adressraum über die vollen 32bit.

wenn der prozess auf ein datum im speicher zugreift macht er das über eine virtuelle adresse die entweder fix im programmcode verankert ist oder auch zur laufzeit berechnet wird (allerdings auch dann mir irgendwelchen fixen basisadressen)

wo dass datum dann wirklich liegt ist dem prozess egal, die MMU rechnet die virtuelle adresse in die physikalische adresse, an der das datum liegt, um bzw. wirft einen page fault falls das gewünschte datum momentan garnicht im speicher liegt sondern ausgelagert ist.
in diesem fall tritt dann ein interrupt auf und der laufende prozess wird unterbrochen und der page-fault-handler des betriebssystems geladen.
dieser muss dann dafür sorgen, dass die gewünschten pages in den hauptspeicher geladen werden und die page-tables updaten. anschließend wird das programm wieder an der selben stelle fortgeführt.

Gast
2007-11-21, 23:06:06
Kann es sein, das Microsoft mit dem SP1 für Vista PAE nun freigeschaltet hat?

Habe neulich einen Screenshot gesehen, in dem unter 32 bit VISTA volle 409x MB zur Verfügung standen (Taskmanager)!

Kann das jemand bestätigen?