Laufen 32 Bit Programme auf einem 64 Bit OS besser? -> Speicherfragmentierung



  • In der WP steht:

    Jedoch können Programme auch mit virtuellen Speichermanagement über kontinuierliches explizites Speicher-Allokieren und -Deallokieren (malloc(), free()) oder ungeschickt festplatzierten Programmbibliotheken (DLLs)[6] ihren virtuellen Speicherraum selbst fragmentieren und damit ebenfalls in laufzeitabhängige "Out-of-Memory"- Situationen laufen.
    Dies trat in den 2000ern am Ende der 32-Bit PC-Ära als praktisches Problem auf, der virtuelle Adressraum war nicht mehr signifikant größer als der typische physikalische RAM-Ausbau. Bei speicherintensiven Anwendungen wie z. B. wissenschaftlichen Simulationen (z. B. mit Matlab) oder aufwändigen 3D-Computerspiele (wie Gothic 3[7], Supreme Commander[8]) führte dies zu gehäuften Out-of-Memory-Problemen, trotz genügend physikalischem und virtuellem (Gesamt-)Speicher.

    http://de.wikipedia.org/wiki/Virtuelle_Speicherverwaltung#Speicherfragmentierung

    Bei einem 32 Bit Prozess bleibt der virtuelle Adressraum doch sicherlich weiterhin nur 32 Bit groß, aber der physikalische Adressraum kann doch nun auf einem 64 Bit OS und 64 Bit CPU und ausreichend viel RAM (sagen wir mal > 8 GB) viel größer sein, so daß es für das OS bzw, die MMU kein Problem sein sollte, ausreichend großen zusammenhängenden Speicher zu finden, oder?

    Wenn dem so ist, dann müßten 32 Bit Prozesse auf einem 64 Bit OS ja besser laufen, ist dies richtig?



  • Wenn da PAE nicht wäre.



  • cooky451 schrieb:

    Wenn da PAE nicht wäre.

    ????



  • 32 Bit Prozess schrieb:

    In der WP steht:
    Bei einem 32 Bit Prozess bleibt der virtuelle Adressraum doch sicherlich weiterhin nur 32 Bit groß, aber der physikalische Adressraum kann doch nun auf einem 64 Bit OS und 64 Bit CPU und ausreichend viel RAM (sagen wir mal > 8 GB) viel größer sein, so daß es für das OS bzw, die MMU kein Problem sein sollte, ausreichend großen zusammenhängenden Speicher zu finden, oder?

    Wenn dem so ist, dann müßten 32 Bit Prozesse auf einem 64 Bit OS ja besser laufen, ist dies richtig?

    Es geht nicht darum genügend zusammenhängenden physikalischen Speicher zu finden (das ist i.d.T. egal, die MMU kann auch kreuz und quer mappen), sondern zusammenhängenden virtuellen Speicher. Bsp: Wenn du nur Adressraum für 4GB hast, komplett verbraucht durch 4x1GB Speicheranforderungen. Wenn Du jetzt Block 0 und 3 freigibst, dann hast Du nur noch die 2GB Adressen in der "Mitte" belegt (davor und danach sind 1 GB freier Speicher). Du kannst aber jetzt trotzdem keinen 2GB großen Block mehr anfordern, da dieser große Block immer in einen schon anderweitig belegten Bereich im virtuellen Adressraum reichen würde.


Log in to reply