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 kann der Speicherbereich oberhalb von 1 MiB so verwaltet werden, dass verschiedene Programme und Gerätetreiber bei der Verwendung des Erweiterungsspeichers nicht in Konflikt geraten.

Er regelt außerdem den Zugriff auf den oberen Speicherbereich (den Upper Memory Block, UMB) zwischen 640 KiB und 1 MiB, in welchen Teile des DOS-Kernels und von Gerätetreibern sowie TSR-Programme geladen werden können.[2]

Die Höhe des nutzbaren Speicherplatzes oberhalb der 1-MiB-Grenze hängt von der x86-Prozessorgeneration ab. Sie beträgt beim 16-Bit-80286 maximal 15 MiB und ab dem 80386, der die 32-Bit-x86-Architektur (retronymIA-32“) begründete, maximal 1023 MiB unter MS-DOS 6.x.[3] Bei solchen Systemen wird der Treiber bei der Installation von MS-DOS automatisch installiert.[4]

HIMEM.SYS kann durch Einstellungen in der CONFIG.SYS konfiguriert und angepasst werden.[2] Zum Ausführen von Windows 3.x im 286- (Standard-) oder 386-Modus (Erweiterter Modus) ist HIMEM.SYS unbedingt notwendig; ist der Treiber nicht vorhanden, startet Windows nicht.[5] 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,[6] wie dies auch unter Windows NT der Fall ist.[7] 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.[8]

DOS-Startkonfiguration

In der CONFIG.SYS soll HIMEM.SYS noch vor einem Expanded Memory Manager, wie EMM386.EXE, geladen werden. Ab MS-DOS 5.0 können danach Gerätetreiber mit dem Befehl DEVICEHIGH in den oberen Speicherbereich geladen werden.[9] DR DOS unterstützt zusätzlich den Befehl HIDEVICE.[10] Es ist jedoch Voraussetzung, dass DOS die Verwaltung der Speicherblöcke im oberen Speicherbereich (UMB, Upper Memory Block) übernimmt, wofür der Befehl DOS=UMB benötigt wird. Mit DOS=HIGH können Teile des DOS-Kernels selbst in den oberen Speicher geladen werden.[11]

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 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.

Einzelnachweise

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.