Paar Fragen zu Speicher (Windows)



  • Ivo schrieb:

    Bei 2 GB /Prozess ist normalerweise Ende. Wenn das Programm auslagert, kommt die Auslagerung nicht in die Rechnung hinein.

    Ging es nicht darum, dass das Betriebssystem auslagert? Das spielt nämlich sehr wohl in die 2 GB rein.



  • Badestrand schrieb:

    Ivo schrieb:

    Bei 2 GB /Prozess ist normalerweise Ende. Wenn das Programm auslagert, kommt die Auslagerung nicht in die Rechnung hinein.

    Ging es nicht darum, dass das Betriebssystem auslagert? Das spielt nämlich sehr wohl in die 2 GB rein.

    Du kannst in Deinen Programm aber selber swappen und schon geht es nicht mehr in die Rechnung rein.
    Ging es nur um das OS? Wenn ja, hast Du sicherlich recht.



  • Äh ich checks noch immer nicht. Wenn meine Anwendung nun die 2GB auf 32bit verbraucht hat, und ich weiteren Speicher dynamisch anfordere, schlägt es dann fehl oder nicht? Wird dann statt dem RAM automatisch die Auslagerungsdatei verwendet?



  • Die Auslagerungsdatei hat damit nix zu tun. Angenommen, dein PC hat nur 512MB RAM und du allokierst 1 GB, dann kommt sicherlich 3/4 davon in die Auslagerungsdatei. Trotzdem sind deine Pointer alle noch valid (und "belegen" virtuelle Adressen). Bei 'nem Zugriff auf einen Pointer, dessen Speicher auf der Platte liegt, wird dann was anderes aus dem Arbeitsspeicher auf die Platte ausgelagert und das, worauf du zugreifst, wird wieder in den RAM geholt.
    Die Auslagerungsdatei arbeitet damit auf einem ganz anderen Problemfeld als die 32-Bit-Beschränkung. Also: Du kannst nicht mehr als ~2GB allokieren, einfach weil du nur 4GB adressieren kannst und 2GB an Adressen in der Regel für's OS reserviert sind.



  • Achja, so große Adressen gibt es unter 32bit ja gar nicht 😮

    Ok verstehe, es muss erst mal in den RAM passen, damit die Auslagerungsdatei genutzt werden kann. Direkt in die Datei mappen wäre ja auch unsinning da viiiel zu langsam.

    Aber was ich so in Erinnerung habe, laufen neuere Spiele problemlos auch mit wenig RAM. Aber da bin ich mir nicht sicher.
    (Oder sind Abstürze/Fehlermeldungen wegen zu wenig RAM üblich? Ist mir noch nie aufgefallen, sowas...)



  • Windows0r schrieb:

    Aber was ich so in Erinnerung habe, laufen neuere Spiele problemlos auch mit wenig RAM. Aber da bin ich mir nicht sicher.

    Na ja, was heißt wenig? Viele aktuelle Spiele setzen schon 1 GB voraus (was ja nicht heißt, dass die nicht mehr nutzen).

    Für 32-Bit-Windows gibts übrigens auch nen Switch, der dir erlaubt, ein wenig mehr Speicher pro Prozess zu nutzen:

    http://support.microsoft.com/kb/316739

    Hab ich aber nie ausprobiert. In der Regel kommen alle Programme doch gut mit 2 GB hin. Und wer sehr viel mehr für Profi-Software braucht, sollte halt nach Möglichkeit auf x64 wechseln.



  • zB. Anno 1404 hat als Mindestvoraussetzung 1GB Ram. Bei mir braucht der Prozess aber schon ~1.6GB ("Working Set") nach paar Stunden Spielzeit.

    Also würde das Spiel mit 1GB abstürzen?



  • Windows0r schrieb:

    zB. Anno 1404 hat als Mindestvoraussetzung 1GB Ram. Bei mir braucht der Prozess aber schon ~1.6GB ("Working Set") nach paar Stunden Spielzeit.

    Also würde das Spiel mit 1GB abstürzen?

    nein, es müsste nur deutlich öfter auslagern, was den Spielfluss erheblich bremsen kann



  • Windows0r schrieb:

    zB. Anno 1404 hat als Mindestvoraussetzung 1GB Ram. Bei mir braucht der Prozess aber schon ~1.6GB ("Working Set") nach paar Stunden Spielzeit.

    Also würde das Spiel mit 1GB abstürzen?

    Wenn du die Voraussetzung erfüllst, warum gehst du dann davon aus, dass das Spiel abstürzt? Macht nicht wirklich Sinn, oder? 😉



  • Ok, dann bin ich einfach zu dumm und kapiers immer noch nicht so richtig.


  • Mod

    Windows0r schrieb:

    Ok, dann bin ich einfach zu dumm und kapiers immer noch nicht so richtig.

    Ok, gaaanz langsam:

    Maximal nutzbarer Speicher auf 32 Bit Systemen überhaupt (ohne fiese Tricks): 4 GiB (edit: Weil 2^32 Byte = 4 GiB)
    Das gilt für alle Programme, unter anderem auch für das Betriebssystem, dass den Speicher für andere Programme verwaltet. Ob die 4 GiB in richtigen RAM-Modulen vorliegen oder auf der Festplatte sind, ist dabei erstmal egal.

    Von diesen 4 GiB nimmt sich Windows selber schonmal 2 GiB (mit Tricks auch nur 1 GiB, aber das ist an dieser Stelle nicht wichtig). Da Windows auch den Speicher für alle Programme verwaltet, bleibt für diese logischerweise maximal 2 GiB (bzw. 3 GiB) übrig. Ob dieser Speicher in RAM-Modulen oder auf der Festplatte vorliegt, ist dabei immer noch egal.

    Windows verwaltet wie gesagt die kompletten 4 GiB des 32-bit Systems. Dabei wird alles was nicht in die echten RAM-Module passt auf die Festplatte geschrieben. Angenommen du hast 1GiB RAM-Module und alle Programme inklusive Windows verbrauchen 1,5 GiB, dann wird 1 GiB im echten RAM gehalten und 0.5 GiB auf die Festplatte geschrieben. Welche Daten im echten RAM sein sollen und welche auf der Festplatte entscheidet Windows mit irgendwelchen tollen Algorithmen die für ein möglichst reibungsloses Arbeiten sorgen sollen.

    Wenn jetzt alle Anwendungen zusammen mehr als 2 GiB Speicher brauchen, hat Windows nicht mehr genug übrig, da ja von den 4 GiB schon 2 GiB von Windows reserviert wurden. Folglich bekommt das Programm, das den nicht zur Verfügung stehenden Speicher angefordert hat ein Signal, dass die Speicheranforderung nicht geklappt hat. Viele Programme quittieren dies mit einem Crash-to-Desktop.

    Hat man nur 1 GiB echten RAM und ein Programm braucht mehr als 1 GiB, dann wird, wie schon gesagt, ausgelagert. Das Programm bekommt davon im Prinzip nichts mit, der Benutzer wird aber merken, dass die Festplatte am rödeln ist und das Programm nur noch sehr zäh reagiert. Abstürzen wird das Programm aber nicht, da es allen angeforderten Speicher bekommen hat, auch wenn dieser nun auf der Festplatte liegt.



  • 👍 🕶 👍

    Thanks a lot! Jetzt hab ich's kapiert!



  • Und falls es dich interessiert: diese Tricks, von denen SeppJ spricht, sind Switches in der boot.ini (/3gb und /userva). Damit kannst du ein wenig mehr Speicher (bis 3 GB, abhängig vom Wert im userva-Switch) bereitstellen.


Anmelden zum Antworten