Creopard header Logo

Windows 98 mit mehr als 1 GB RAM stabil betreiben, auch bei Dualboot

Update: 08.01.2024 | Erstellt: 20.08.2019 von creopard

Unterstüzen Sie dieses Projekt mit Ihrer Spende

Herzlichen Glückwunsch,
Ihr Werbeblocker funktioniert!

Wenn Sie unsere Inhalte nützlich finden, würden wir uns über eine kleine Unterstützung freuen. Sie können auch gerne Ihren Werbeblocker für diese Seite deaktivieren, um kostenlose Dienste weiterhin zu ermöglichen.

Dieser Hinweis erscheint, weil Sie einen Werbeblocker verwenden.


Windows 98 (SE) ist ja dafür bekannt, dass es bei mehr als 1 GB RAM zu seltsamen Problemen kommen kann, wie z.B. der Fehlermeldung, es wäre nicht genügend RAM verfügbar.

Gerade in Dual-Boot Konfigurationen, also z.B. Windows 98 und Windows XP ist das relativ unpraktisch. Man will hier ja nicht jedes Mal die RAM-Riegel tauschen, nur weil Windows 98 nicht mit dem maximal verbauten Speicher zurecht kommt.

Mehr Details zur Ursache im Microsoft Knowledgebase Artikel KB253912: "Out of Memory" Error Messages with Large Amounts of RAM Installed

Es gibt allerdings mehrere sehr verschiedene Möglichkeiten, dieses Problem zu beheben:


Möglichkeit #1: Festlegen der Menge des für Windows verfügbaren Arbeitsspeichers mit "MaxPhysPage" in der SYSTEM.INI

In der Datei C:\WINDOWS\SYSTEM.INI kann man folgende Einträge hinterlegen:

Beispiel für eine Begrenzung von Windows für bis zu 512 MB RAM (hier 512 MB = 20000hex):

[386Enh]
MaxPhysPage=20000

[vcache]
MaxFileCache=524288

Beispiel für eine Begrenzung von Windows für bis zu 1 GB RAM (hier 960 MB = 3C000hex):

[386Enh]
MaxPhysPage=3C000

siehe auch KB181862: Specifying Amount of RAM Available to Windows Using MaxPhysPage und bei mehr als 1,5 GB RAM siehe auch KB304943: Computer May Reboot Continuously with More Than 1.5 GB of RAM.

(Vcache ist intern auf eine maximale Cache-Größe von 800 MB begrenzt.)

Das funktioniert allerdings nicht automatisch für den "Abgesicherten Modus" unter Windows. Dazu müsste man die oben genannten Zeilen ebenfalls in die Datei SYSTEM.CB einpflegen.

Dieses Problem kann bei Advanced Graphics Port (AGP)-Grafikkarten leichter auftreten, da die AGP-Aperture Size auch Adressen im Systembereich zugeordnet ist. Wenn Vcache beispielsweise eine maximale Cache-Größe von 800 MB verwendet und eine AGP-Grafikkarte eine 128-MB-Aperture Size zugewiesen hat, bleibt nur sehr wenig Adressraum für den anderen Systemcode und die Daten, die diesen Bereich virtueller Adressen belegen müssen.

Daher gibt es noch zwei weitere und bessere Möglichkeiten.

 

Möglichkeit #2: Verwendung des "DOS XMS Memory Managers" (HimemX) mit dem Befehl "HIMEMX.EXE /MAX"

Folgende Schritte sind bei einer Windows Neuinstallation und der Nutzung von mehr als 1 GB RAM mit HIMEMX notwendig:

  • Windows 98 mit 1 GB RAM oder weniger(!) installieren, also ggf. vorher RAM ausbauen.
  • Das Programm HimemX von https://sourceforge.net/projects/himemx/ herunterladen.
  • HIMEMX.ZIP entpacken und HIMEMX.EXE nach C:\Windows\ kopieren.
  • Das Dialogfeld "Ausführen" (Windows + R) öffnen und SYSEDIT eingeben.
  • Die Datei C:\CONFIG.SYS öffnen.
  • Ganz am Anfang der Datei folgendes hinzufügen und die Änderungen speichern:

    DEVICE=C:\WINDOWS\HIMEMX.EXE /MAX=1048576
  • Anschließend Windows 98 herunterfahren.
  • Jetzt wieder 2 GB RAM oder mehr RAM in den PC einbauen.
  • Das System wieder hochfahren.
  • Windows 98 erkennt nun nur noch 1 GB RAM, obwohl 2 GB installiert sind und kann damit trotzdem stabil betrieben werden.

Hintergrund: Die Angabe von "HIMEMX.EXE /MAX=1048576" begrenzt nun den für Windows 98 sichtbaren Speicher auf 1048576 KB bzw. 1 GB RAM.

 

Möglichkeit #3: Installation von PATCHMEM.EXE von "Rudolph R. Loew" (patcht die Windows Dateien VMM.VXD und VCACHE.VXD)

Diese elegante Möglichkeit ist auch im Windows 98 SE Service Pack 3 enthalten.

Das mittlerweile kostenlose RAM Limitation Patch Programm (PATCHMEM) patcht Windows 95, 98, 98 SE oder ME, um Computer mit mehr als 512 MB RAM zu unterstützen. Unveränderte Versionen von Windows 95, 98, 98SE oder ME können fehlerhaft funktionieren oder abstürzen, wenn mehr als 512 MB RAM vorhanden sind.

Dieses Patch-Programm extrahiert den Windows-Speichermanager (VMM.VXD) und den Disk-Cache-Manager (VCACHE.VXD) aus der in der Datei VMM32.VXD im Windows-SYSTEM-Verzeichnis enthaltenen Datei, falls erforderlich. Das Patch-Programm aktualisiert dann alle drei Komponenten.

Hinweis: Die eventuell bereits gesetzten Einträge MaxPhysPage und MaxFileCache in der Datei C:\WINDOWS\SYSTEM.INI müssen entfernt werden, wenn sie vorhanden sind!

Installationsschritte

Wenn Sie eine Neuinstallation von Windows auf einem Computer mit mehr als 512 MB RAM durchführen, müssen Sie das Patch installieren, bevor Windows gestartet wird.

A) Windows 98 mit 1 GB RAM oder weniger(!) installieren, also ggf. vorher RAM ausbauen und Windows normal installieren. Anschließend, das PATCHMEM-Patch-Programm ausführen und dann den zusätzlichen RAM wiederherstellen.

B) Wenn Sie Windows in einem System mit mehr als 512 MB RAM installieren müssen, können Sie dies wie folgt tun:

  1. Legen Sie das Patch-Programm auf eine DOS-Diskette oder auf eine formatierte Partition.
  2. Führen Sie die Windows-Installation bis zum ERSTEN Neustart durch.
  3. Starten Sie neu und halten Sie die STRG-Taste gedrückt, um das Windows-Startmenü zu öffnen.
    HINWEIS: Wenn Windows ohne das Startmenü startet, kann es abstürzen. In diesem Fall drücken Sie die RESET-Taste und warten Sie auf das Windows-Startmenü. Möglicherweise müssen Sie die Stromversorgung wieder einschalten, wenn sie ausgeschaltet ist.
  4. Wählen Sie die Option "Nur Eingabeaufforderung" aus und drücken Sie ENTER.
  5. Führen Sie den Befehl WININIT aus.
  6. Gehen Sie zu der Diskette oder Partition, auf der sich das PATCHMEM-Programm befindet.
  7. Führen Sie das PATCHMEM-Programm aus.
  8. Entfernen Sie die Diskette, falls vorhanden.
  9. Drücken Sie die Reset-Taste oder CTRL-ALT-DEL.
  10. Setzen Sie die Windows-Installation fort.

Windows 95- und 95A-Benutzer müssen Schritt 3 durch folgendes ersetzen:

  • Starten Sie neu und warten Sie, bis Windows abstürzt.
    Drücken Sie RESET und warten Sie auf das Windows-Startmenü. Möglicherweise müssen Sie die Stromversorgung wieder einschalten, wenn sie ausgeschaltet ist.
  • Fahren Sie dann mit Schritt 4 fort.

Die Neuinstallation, Reparatur oder Aktualisierung von Windows oder das Hinzufügen/Entfernen von Windows-Komponenten können die gepatchten Dateien überschreiben.
Wenn eine aktualisierte VMM.VXD und/oder VCACHE.VXD Datei ins C:\WINDOWS\SYSTEM\VMM32 Verzeichnis kopiert wird, wird die vorhandene bereits gepatchte VMM.VXD und/oder VCACHE.VXD Datei überschrieben werden.
In diesem Fall ist eine Neuinstallation des Patches ist erforderlich, um diese Dateien erneut zu patchen!

2,75 GB oder mehr RAM

Sollte mehr als 2,75 GB verfügbares RAM im Computer verbaut sein, können Programme, die XMS-Speicher verwenden, den Vorrat an Handles erschöpfen, die von HIMEM.SYS bereitgestellt wird. Pflegen Sie die folgende Zeile an den Anfang der Datei CONFIG.SYS ein, um dieses Problem zu verhindern:

DEVICE=<Pfad>\HIMEM.SYS /NUMHANDLES=64

<Pfad> ist der Pfad zu Ihrer HIMEM.SYS-Datei, normalerweise C:\WINDOWS. Wenn Sie bereits eine Zeile mit HIMEM.SYS vorhanden ist, fügen Sie die Option NUMHANDLES hinzu und stellen sicher, dass sie mindestens 64 beträgt.

Dies ist eher ein DOS-Problem als ein Windows-Problem, aber ein fehlerhaftes DOS-Programm kann dazu führen, dass Windows 9x fehlerhaft funktioniert oder nicht startet.

Bekannte Probleme

EMM386.EXE wird den gesamten Speicher blockieren, wenn mehr als ungefähr 2800 MB RAM vorhanden sind. Wenn Sie EMM386.EXE mit mehr als 2800 MB RAM verwenden, müssen Sie die im oben genannten Abschnitt "2,75 GB oder mehr RAM" beschriebene /NUMHANDLES-Option hinzufügen.

 


Wissenswertes:

Der Windows 98 Speichermanager unterstützte nur maximal 1 GB. Diese Menge an Speicher wurde für die damalige Zeit als überdimensional angesehen und als die Leute so viel oder mehr Speicher hatten, erwartete Microsoft, dass die Leute entweder neuere Versionen von Windows 9x oder Windows NT verwenden würden.

Das lesenswerte Blog von Raymond Chen: "The Old New Thing" hat mehr Details dazu:

Windows 95 wird nicht starten, wenn Sie mehr als etwa 480 MB Arbeitsspeicher haben. (Dies galt damals als eine unglaubliche Menge an Speicher. Bedenken Sie, dass die Zielmaschine für Windows 95 ein 4 MB 386SX war und eine leistungsstarke Maschine 16 MB hatte. Gemäß dem Moore'schen Gesetz hatten wir also sieben Jahre Zeit, bevor wir etwas dagegen tun mussten. Einer meiner Freunde hat 96 MB Speicher in seinem Computer installiert, um zu testen, ob wir unter "irrsinnig großen Speicherkonfigurationen" scheitern würden, und wir alle sabberten.)

Windows 98 erhöhte das Limit auf 1 GB, weil es einen Hersteller gab (der ungenannt bleiben soll), der verrückt genug war, Computer mit 1 GB RAM verkaufen zu wollen und Windows 98 vorinstallieren wollte, anstatt das viel geeignetere Windows NT.


Eines der ersten Dinge, die im Windows 95-Startprozess passieren, sobald der Übergang in den 32-Bit-Modus erfolgt ist, ist die Initialisierung des 32-Bit-Speichermanagers. Aber jetzt haben Sie ein Huhn-und-Ei-Problem: Der Speichermanager muss etwas Speicher zuweisen, um den Speicher zu verfolgen, den er verwaltet (das Verfolgen, welche Seiten eingeblendet sind und welche ausgeblendet sind, und so weiter). Aber er kann keinen Speicher zuweisen, bis der Speichermanager initialisiert ist.

Die Lösung besteht darin, den Speichermanager zweimal zu initialisieren.

Beim ersten Mal, wenn der Speichermanager initialisiert wird, erhält er seinen gesamten Speicher aus einem festen Block im init-Daten-Segment, der im Voraus zugewiesen wurde. Er richtet diesen festen Block als den Speichermanager-Heap ein. Jetzt steht also ein Heap zur Verfügung, um Speicherzuweisungen zu erfüllen.

Als Nächstes beginnt der Speichermanager nach dem echten Speicher im System zu suchen, und wenn er welchen findet, weist er Speicher (aus dem anfänglichen festen Block) zu, um den echten Speicher zu verfolgen.

Nachdem der Speichermanager den gesamten echten Speicher im System gefunden hat, ist es Zeit, den Speichermanager ein zweites Mal zu initialisieren: Er schneidet einen Teil dieses echten Speichers aus, um ihn als den "echten Heap" zu verwenden, und kopiert die Informationen vom bisher verwendeten Heap (dem festen Heap) in den "echten Heap".

Sobald alles kopiert ist und alle Zeiger korrigiert sind, werden die globalen Speichermanager-Heap-Zeiger geändert, um auf den neuen ("echten") Heap zu zeigen, und der ursprüngliche Heap wird aufgegeben.

Der durch den ursprünglichen Heap belegte Speicher wird zurückgewonnen, wenn das init-Daten-Segment verworfen wird (was am Ende der Systeminitialisierung erfolgt).

Die Gesamtbegrenzung des RAM tritt auf, weil die Größe des festen Blocks im init-Daten-Segment groß genug sein muss, um alle während des Speicherscans durchgeführten Speicherzuweisungen zu erfüllen. Wenn Sie zu viel Speicher haben, schlägt eine Zuweisung während des Speicherscans fehl und das System stoppt.

Die Größe des init-Daten-Segments wurde gewählt, um zwei Faktoren auszugleichen. Je größer Sie es machen, desto mehr Speicher können Sie im System haben, bevor es während des Speicherscans zu einer Zuweisungsfehler kommt. Aber Sie können es nicht zu groß machen, sonst können Maschinen mit kleinen Speichermengen VMM nicht einmal in den Speicher laden.






Ähnliche Artikel anzeigen:




Unterstüzen Sie dieses Projekt mit Ihrer Spende

Herzlichen Glückwunsch,
Ihr Werbeblocker funktioniert!

Wenn Sie unsere Inhalte nützlich finden, würden wir uns über eine kleine Unterstützung freuen. Sie können auch gerne Ihren Werbeblocker für diese Seite deaktivieren, um kostenlose Dienste weiterhin zu ermöglichen.

Dieser Hinweis erscheint, weil Sie einen Werbeblocker verwenden.