Adressierbarer Arbeitsspeicher

Stephan78

Ensign
Registriert
Sep. 2010
Beiträge
162
Hallo,

ich habe ein Asus B50A 32bit Notebook mit WinXP Home.
Wie groß ist der max. adressierbare RAM?
Laut dem hier
http://www.compuram.de/blog/wie-vie...-64-bit-betriebssystemen-maximal-adressieren/
sind es 4GB, lt. anderen Quellen nur 2GB.
Kann man das im WIndows irgendwo anzeigen lassen?
Der Windows Taskmanager sagt 3GB RAM physikalischer Speicher,
aber ich weiß nicht, ob das auch der adressierbare oder nur der physisch eingebaute ist.

Mein Problem ist, daß ich ein rechenintenisves Script geschrieben habe,
daß immer dann einen Speicherfehler erzeugt und abbricht, wenn nur noch
1GB verfügbarer RAM im Taskmanager angezeigt wird. Wäre der adressierbar, dürfte es ja eigentlich
keinen Abbruch geben.
 
Nabend!

Windows in 32bit kann 4GB adressieren. Abzüglich vom PCI-Adressraum bleiben so 3-3,5GB. Jeder Prozess bekommt 2GB zur Verfügung gestellt. Falls das "Large Adress Aware"-Bit in einem Programm gesetzt ist (kann man nachträglich ändern) sind bis zu 4GB möglich. Alles andere geht nur mit 64bit.
 
Das was der Taskmanager anzeigt, ist das was adressierbar ist.
 
Moin,

ein Teil der Antworten ist richtig: zunächst ein 32bit-Windows kann selbst 4GB adressieren, abzüglich dessen, was an PCI-Adressraum und evtl. Shared Memory für eine integrierte Grafiklösung benötigt wird. Davon kann ein normales 32-bit Windows-Programm erst einmal 2GB pro Prozess für sich selbst beanspruchen. Wenn es mit gesetztem Large Address Aware-Bit kompiliert wurde wohl so 3GB...

Aber: die Hardware darunter spielt ebenfalls eine Rolle, auch abseits der oben genannten Einschränkungen: Einige Atoms und Celerons sind nämlich von Intel künstlich beschnitten und können nur 2GB verwalten. Ich finde leider auf die schnelle keinerlei Angaben, ob das auch für Dein Notebook zutrifft.

Ergo: der kleinste gemeinsame Nenner aus Chipsatz, CPU, RAM-Ausstattung und Betriebssystem setzt die Grenze. Je nach Programm kann die dann ausgereizt werden oder nicht.

Beste Grüße,
Mork
 
Adressierbar sind 4GB. Die kannst du aber nicht komplett für normale Prozesse nutzen (jedoch für RAMDisks, Shared-Memory mit anderer Hardware etc.), sondern nur soviel, wie Windows eben anzeigt, hier also 3GB.

Pry_T800 schrieb:
Na da wirds aber laaangsam zeit für ein Windoof update:D
Egal, auf was man da updated, man hätte immer noch weniger Speicher zur Verfügung.
 
@MorkVomOrk76:

Ich habe 3GB RAM-Riegel im Laptop,
das ist die Originalausstattung.
Dazu Grafik on board, IntelChipsatz.
Bei all den möglichen hardwareseitigen Limits, die genannt worden,
wäre es dann trotzdem so, daß der tatsächlich verfügbare und ansprechbare RAM
im Taskmanager angezeigt wird? Ich habe wie gesagt das Problem,
daß trotz einem lt. Taskmanager noch verfügbaren RAM von 1GB die Berechnung abstürzt.
Entweder hat die Programmierumgebung ein Problem oder der Taskmanager zeigt mehr Speicher an,
als tatsächlich auf meinem System noch frei und real verfügbar ist.
Lässt sich das irgendwie rausfinden? Ziel wäre ja, das Problem irgendwie zu lösen.
 
Das 32Bit Programm dass Du benutzt hat kein LAA Flag und Du hast die Auslagerung klein oder abgestellt. Das Programm schmiert bei 1.8GB Speicher Nutzung ab. Ganz normal. 2Gb Userspace, 2GB Kernel für jedes Programm.
 
Zuletzt bearbeitet:
@Stephan: Es mag sein, dass dein Rechner noch gut 1GB Speicher frei hat, wie der Taskmanager anzeigt. Da aber für einen Prozess nur 2GB zugreifbar sind, begrenzt dies dein Programm. Lösung wäre nur ein Umpatchen des "Large Adress Aware"-Bit, dann wären 3GB Speicher drin, allerdings nur mit möglichen Nebenwirkungen (Stabilitätsprobleme der Anwendung, oder fehlerhafte Daten). Diese 2GB Speicher stehen jeder Anwendung zur Verfügung, auch wenn weniger Speicher vorhanden ist.
 
Hallo,

was genau heißt Prozess in meinem Fall?
Ich habe WinXP laufen und eine Python-Konsole,
in der ich ein Skript laufen lasse.
Freier Speicher ohne Python: 2GB
Freier Speicher nach Start der Python-Konsole: 1,8 GB
Nach dem Starten des Skripts geht der freie Speicher auf 1GB runter,
dann wird der Fehler ausgelöst. Im Falle daß alle Python-Aktivitäten=ein Prozeß
gilt, wäre ja gerade mal 1GB belegt, bevor der Fehler ausgelöst wird.
Kann es sein, daß vielleicht irgend ein Chipsatz-Treiberproblem besteht?
 
Kann es sein, dass da einfach ein Fehler im Skript ist?
Hast du es mal auf anderen Rechnern mit mehr Speicher getestet?
 
Hi,
ich glaube, daß kein Skript-Fehler vorliegt,
da ein anderes Skript das gleiche Problem verursacht hat,
nachdem ich dort ein großes Array aus dem Speicher geworfen habe, lief es durch.
Es wird wie gesagt immer ein Memory-Fehler geworfen, wenn der freie Speicher 2GB unterschreitet
und das bei einem Standardbefehl im Skript, der allerdings auf ein 200MB-Array angewendet wird.
Es geht mir um
die grundsätzliche Klärung, was hier eigentlich los ist bzw. wodurch das Problem konkret verursacht wird
und ob es eine Möglichkeit gibt, das Problem zu lösen, ohne einen neuen Rechner zu beschaffen
oder Python/Pandas nicht mehr zu verwenden .
Ergänzung ()

Stephan78 schrieb:
Hi,

Es wird wie gesagt immer ein Memory-Fehler geworfen, wenn der freie Speicher 2GB unterschreitet
.
Sorry, sollte natürlich 1 GB freier, verfügbarer Speicher heißen.
 
Zurück
Oben