Announcement

Collapse
No announcement yet.

Speicherprobleme bei DOS-Anwendung mit CreateProcess

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicherprobleme bei DOS-Anwendung mit CreateProcess

    Hallo an alle.

    Ich habe seit einiger Zeit ein Problem, bei dem ich nicht ganz weiterkomme.<br>
    Um ISAM-Dateien aus einer früheren Dateistruktur (DOS-Programmiersprache) in eine neue Windows-Struktur umzusetzen,<br>
    muss ich diverse DOS-Aufrufe mit CreateProcess und Command.Com /C verwenden.<br><br>
    Dabei erzeuge ich je ISAM-Datei mehrere Aufrufe:<br>
    - Neuaufbau der Index-Datei im alten Dos-Format<br>
    - Kontrollermittlung der Datei-Struktur<br>
    - Konvertierung der Index-Datei in neues Format<br>
    <br>
    Beim Ablauf des Programmes kommt es dann zu dem Effekt, das der verfügbare Arbeitsspeicher konsequent kleiner wird. <br>
    Je nach verwendetem Betriebssystem Win98/WinNT ist der Effekt aber sehr unterschiedlich.<br>
    Unter Win98 kann das Programm weit über 2000 Dateien konvertieren, ohne abzustürzen. Eine Verringerung des Arbeitsspeichers passiert aber trotzdem.<br>Das heisst ein Absturz würde bei einer höheren Zahl von Dateien auch passieren.<br>
    Unter WinNT stürzt das Programm regelmässig bei einem Wert von 1300-1400 Dateien (also etwa 3900-4200 CreateProcess-Aufrufe) ab, <br>
    da dann Betriebssystem-Meldungen kommen, das zb. Kernel-Dll's nicht mehr nachgeladen werden können (mangelnder Arbeitsspeicher).<br>
    <br>
    Bei den Tests entstand für mich der Eindruck, das der Arbeitsspeicher der bei CreateProcess für den DOS-Task reserviert wird, <br>
    nicht sofort nach Beendigung des Processes freigegeben wird und sich so konsequent eine Auslastung der Systemkapazitäten aufbaut.<br>
    Sobald aber mein Programm beendet wird, sind die Kapazitäten sofort wieder freigegeben.<br>Auch eine Auslagerung des DOS-Aufrufs in eine eigene DLL oder EXE führte nicht zu einem stabileren Programmablauf bzw. Arbeitsspeicherverhalten.<br>
    <br>
    Als zweites hätte ich noch die Frage ob mir jemand erklären kann, warum die Funktion zur Ermittlung des verfügbaren Arbeitsspeichers mir unter WIN98 andere Werte mitteilt als unter Windows NT.<br>
    z.b Windows 98 ca. 35.000 kb / Win NT 67.000 kb<br>
    <br>
    Für eine Hilfe bei diesem Problem wäre ich sehr dankbar.
Working...
X