HIMEM.SYS
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 vom Prozessorentyp ab. Sie beträgt beim 80286 maximal 15 MiB und ab dem 80386, retronym auch als IA-32 bekannt, 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- oder 386-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 (NTVDM
, NT Virtual DOS Machine) 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
- PC-Hardwarebuch, S. 153 Online (Memento des Originals vom 9. Juni 2018 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- Using MS-DOS 6.22, S. 757 Online
- MS-DOS-6.2+6.22-Kompendium, S. 606 Online
- MS-DOS 6.2 User’s Guide, S. 88
- PC Mag - 11. Sept. 1990, S. 422 Online
- Memory Issues in Windows. Abgerufen am 29. September 2017 (englisch): „… the Windows 95 virtual memory manager (Vmm32.vxd) takes over memory management tasks from Himem.sys.“
- Randy Kath: The Virtual-Memory Manager in Windows NT. Microsoft Developer Network Technology Group, 21. Dezember 1992, abgerufen am 29. September 2017 (englisch).
- Administering Windows Server 2008 Server Core - S. 627Online
- MS-DOS 6.22 Befehlsreferenz. DeviceHigh. In: i8086/88 Referenz. Michael Prandl, abgerufen am 29. September 2017.
- Chapter 10 Managing Memory. (Nicht mehr online verfügbar.) In: Caldera DR-DOS 7.02 User Guide. Caldera, Inc., 1998, archiviert vom Original am 30. August 2017; abgerufen am 29. September 2017 (englisch, Abschnitt „Making More Memory Available“). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- MS-DOS 6.22 Befehlsreferenz. Dos. In: i8086/88 Referenz. Michael Prandl, abgerufen am 29. September 2017.