HIMEM.SYS

From Wikipedia, the free encyclopedia

HIMEM.SYS ist ein Gerätetreiber, der es DOS-Programmen und -Treibern ermöglicht, Daten im erweiterten Speicherbereich (englisch Extended Memory) über die Extended Memory Specification (XMS) zu speichern.[1] Mit HIMEM.SYS, der auch als Extended Memory Manager (XMM) bezeichnet wird,[2] lässt sich der Speicherbereich oberhalb von 1 MiB so verwalten, dass verschiedene Programme und Gerätetreiber bei der Verwendung des Erweiterungsspeichers nicht in Konflikt geraten. Der Treiber kann durch Einstellungen in der CONFIG.SYS konfiguriert und angepasst werden.[3]

Die erste Veröffentlichung von HIMEM.SYS war mit Windows 2.10, wo der Treiber unter „Windows/286“, das zwar auch auf PCs mit 8088/8086-Prozessor läuft, ab dem 80286-Prozessor die High Memory Area (HMA) verfügbar macht,[4] und zusätzlich den Zugriff auf den gesamten Erweiterten Speicher (XMS) regelt. Der Treiber ist auch in der Variante „Windows/386“ enthalten, sowie in allen nachfolgenden DOS-basierten Windows-Versionen (Windows 2.11, Windows 3.x und Windows 9x).

HIMEM.SYS ist auch in MS-DOS ab Version 4.01 enthalten und regelt zusätzlich den Zugriff auf den Oberen Speicherbereich (die Upper Memory Area) zwischen 640 KiB und 1 MiB, wohin Teile des DOS-Kernels und von Gerätetreibern sowie TSR-Programme geladen werden können.[3] Einige zu MS-DOS kompatible DOS-Varianten haben vergleichbare Extended Memory Manager hervorgebracht, beispielsweise DR DOS 5.0 mit HIDOS.SYS, das sogar mit 8088-Prozessoren kompatibel ist (dann aber ohne Erweiterten Speicher)[5] und auf 80286-Systemen den NEAT-Chipsatz unterstützt.[6]

Die Höhe des nutzbaren Speicherplatzes oberhalb der 1-MiB-Grenze des Real Mode hängt von der x86-Prozessorgeneration ab. Da der 16-Bit-80286 im Protected Mode maximal 16 MiB adressieren kann, beträgt der maximal von HIMEM.SYS verwaltbare Speicherplatz 15 MiB bzw. ab dem 80386, der die 32-Bit-x86-Architektur (retronymIA-32“) begründete, unter MS-DOS 6.x maximal 1023 MiB,[7] obwohl 32-Bit-x86-Prozessoren bis zu vier Mal so viel Speicher direkt adressieren können (siehe 4-GB-Grenze). Bei solchen Systemen wird der Treiber bei der Installation von MS-DOS automatisch installiert.[8]

DOS-Startkonfiguration

In der CONFIG.SYS muss HIMEM.SYS noch vor einem Expanded Memory Manager wie EMM386.EXE geladen werden, da dieser EMS in XMS emuliert bereitstellt. Auf x86-Prozessoren ab dem „386er“ bzw. mit eigenen Treibern für den Expanded Memory Manager und mit Einschränkungen auch auf dem „286er“ können dadurch DOS-Programme, die „Expanded Memory“ voraussetzen, stattdessen den ohnehin im System verbauten „erweiterten“ (englisch extended) RAM verwenden, ohne dass teure Speicherkarten (in Form von Steckkarten) notwendig sind.

Ab MS-DOS 5.0 können danach Gerätetreiber mit dem Befehl DEVICEHIGH in den oberen Speicherbereich geladen werden.[9] DR DOS 5.0 führte den Befehl ursprünglich (bereits vor MS-DOS 5.0) als HIDEVICE ein,[10] ab DR-DOS 7.0 wird auch die Variante von MS-DOS unterstützt.[11] Es ist jedoch Voraussetzung, dass DOS die Verwaltung der Speicherblöcke im oberen Speicherbereich (UMBs, Upper Memory Blocks: freie Blöcke der UMA) übernimmt, wofür der Befehl DOS=UMB benötigt wird. Mit DOS=HIGH, unter DR DOS 5.0 ursprünglich HIDOS=ON,[10] können Teile des DOS-Kernels selbst in den hohen Speicher (High Memory Area, HMA) geladen werden.[12]

Beispiel für CONFIG.SYS:

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE
DOS=HIGH,UMB

Danach können Gerätetreiber in den oberen Speicherbereich geladen werden:

DEVICEHIGH=CDROM.SYS

Ab MS-DOS 6.0 unterstützt der Befehl DEVICEHIGH auch den Parameter /L, mit dem der Block direkt angegeben werden kann.

Die Startdatei AUTOEXEC.BAT folgt dieser Logik mit dem Befehl LOADHIGH oder kurz LH, ebenfalls ab MS-DOS 5.0. DR DOS versteht zusätzlich (bzw. ursprünglich nur) den Befehl HILOAD:

LH MOUSE.COM

Unter DR DOS können auch in der CONFIG.SYS Programme geladen werden, wofür die Befehle INSTALLHIGH und HIINSTALL verwendet werden können. MS-DOS unterstützt dies nicht.

Windows

Zum Ausführen von Windows 3.x im Standard- (auf 80286) oder Erweiterten Modus (auch „386-Modus“ genannt, da dieser mindestens einen 80386-Prozessor benötigt) ist HIMEM.SYS unbedingt notwendig; ist der Treiber nicht vorhanden, startet Windows nicht.[13] Alle auf Windows 3.11 folgenden DOS-basierten Windows-Versionen, die als Windows 9x bezeichnete Reihe von Windows 95 bis Me, benötigen HIMEM.SYS für die DOS-basierte Funktionalität, während die Speicherverwaltung für native Windows-Programme vom Virtual Memory Manager (VMM, VMM32.vxd) verwaltet wird,[14] wie dies auch unter Windows NT der Fall ist.[15] Damit DOS-Programme weiterhin laufen können stellen ihnen die NT-basierten Windows-Versionen aber ebenfalls ein HIMEM.SYS innerhalb einer virtuellen DOS-Umgebung (NT Virtual DOS Machine, NTVDM) zur Verfügung.[16]

Einzelnachweise

Related Articles

Wikiwand AI