Windows+alte Programme+virtueller Speicher

tanj

New member
Moin moin,

ich hab mal eine Frage zu etwas älteren Programmen unter Windows. Es kommt desöftern vor, dass die Meldung kommt "Das Programm braucht mindestens 4 MB an RAM.". Bei Systemen die heute im Bereich von 2-4 GB RAM liegen eine etwas komische Aussage. Die Lösung des Problems besteht darin, den virtuellen Speicher auf 400 MB - 700 MB zu begrenzen. Heute ist der im Regelfall durch Windows größer eingestellt.

Mich würde nun interessieren, warum das so ist?

Meine einzigster Erklärungsansatz besteht darin, dass beim compilieren noch ein 16-Bit System war. Dadurch ist der Adressraum für die Variablen erheblich geringer. Das Programm schaut wieviel RAM oder virtueller Speicher zur Verfügung steht und bekommt eine zu große Zahl. Um jetzt z.B. einen Bufferoverflow zu vermeiden, wird der Wert "abgeschnitten" und fällt somit unter die Grenze von jetzt z.B. 4 MB. Wenn man meiner Theorie glauben schenken darf, dann müsste doch, sobald die Zahl des virtuellen Speichers groß genug ist, das auch funktionieren. Also 1024MB sind zu viel, es wird "hinten was abgeschnitten" und wir haben vill nur noch 1024 KB; wenn man jetzt die Größe auf 8192 MB erhöht "es wird wieder was abgeschnitten" sind wir bei 8192KB. Damit wäre man wieder drüber.
Alternativ wäre natürlich auch möglich das nicht etwas vom hinteren Teil der Zahl wegkommt, sondern vom Vorderen. Damit hätte man dann immer sagenhafte 0Byte an Speicher.

Ich selbst habe z.Z. kein Windows-System zur Verfügung wo ich das testen könnte.

Habt ihr irgendwelche Ideen?

Gruß

tanj
 

Darkslide

New member
Denkbar wäre folgendes:

Sagen wir, dass das Programm zu Zeiten des 286-er programmiert wurde. Dieser konnte 16 MB an Arbeitsspeicher addressieren, wofür 24 Bits notwendig sind. Bei 2 gb Arbeitsspeicher brauchst du 32 bit Zahlen zum addresieren. Wenn das Programm aber nur 24 bit von den 32 bit einliest, schneidet er den relevanten Teil ab und es bleibt kein Arbeitsspeicher übrig.
 
Oben