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 Ext

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, 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 erlaubt, gemeinsam mit einem danach zu ladenden Speichermanager wie EMM386, zusätzlich den Zugriff auf den Oberen Speicherbereich (UMA, 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 (EMM) geladen werden, wenn dieser für seine Funktion Zugriff auf den Erweiterten Speicher (XMS) benötigt. Das beste Beispiel ist EMM386, der neben EMS, der in XMS emuliert wird, zusätzlich auch UMBs einblendet, die ebenfalls im XMS-Speicherbereich liegen. Auf x86-Prozessoren ab dem „386er“ 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. Auf Systemen mit einem „286er“, die eine EMS-Emulation im Chipsatz per Adressumschaltung ermöglichen, muss der jeweils Chipsatz-spezifische Treiber für den Expanded Memory Manager hingegen vor HIMEM.SYS geladen werden.

Mit UMB-Speichermanagern, nicht nur EMM386, ist es möglich, RAM in unbenutzten Bereichen des geschützten oberen Speicherbereichs (UMA) zwischen 640 KiB und 1 MiB einzublenden, der in Form von UMBs (englisch Upper Memory Blocks) von DOS verwaltet wird. Teile des Betriebssystems, Treiber und TSR-Programme können dorthin verlagert werden. Dies wird ab MS-DOS 5.0 mit dem Befehl DEVICEHIGH unterstützt.[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 zusätzlich der MS-DOS-Befehl unterstützt.[11] DOS übernimmt die Verwaltung der UMBs (der als RAM nutzbaren Speicherblöcke im oberen Speicherbereich, der UMA), wenn dies in der CONFIG.SYS per DOS=UMB eingeschaltet ist. Die Voraussetzung dafür ist lediglich, dass HIMEM.SYS und EMM386.EXE ebenfalls per CONFIG.SYS geladen werden. Zusätzlich versucht DOS mit DOS=HIGH, unter DR DOS 5.0 ursprünglich HIDOS=ON,[10] Teile des Kernels und ausgesuchter systemnaher Treiber in den Hohen Speicher (HMA, die ersten fast 64 KiB über der 1-MiB-Grenze) zu verlagern.[12] Da DOS für den HIMEM-Trick die Kontrolle über die A20-Adressleitung benötigt, wird die HMA nur für ausgesuchte Software genutzt, während zahlreiche Treiber die Verlagerung in UMBs unterstützen.

All diese Maßnahmen dienen dazu, mehr freien Konventionellen Speicher zu schaffen, der von Anwendungsprogrammen dringend benötigt wird. Auch Programme, die von sich aus Speichererweiterungen wie EMS (per EMS-Speichererweiterung) oder XMS (z. B. per DOS-Extender) unterstützen bzw. nutzen, benötigen eine Mindestgröße an freiem DOS-Arbeitsspeicher, der nur im Konventionellen Speicher als solcher verfügbar ist.

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 (die Adresse des UMB) 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]

Die HIMEM.SYS-Version in frühen OEM-Versionen von Windows 95b enthält einen Fehler, sodass der Treiber statt nur 1 KiB Konventionellen Speicher satte 40 KiB belegt, was wertvollen „DOS-Speicher“ wegnimmt, der auch in der DOS-Box (dem DOS-Fenster „MS-DOS-Eingabeaufforderung“) von Windows fehlt. In der US-Version von Windows 95b ist dieser Fehler in HIMEM.SYS nicht enthalten.[17]

Einzelnachweise

  1. 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.@1@2Vorlage:Webachiv/IABot/www.google.de
  2. Steven Roman: Understanding Personal Computer Hardware. Springer Science + Business Media, 1998, ISBN 978-0-387-98531-2, 8. Memory, S. 152, Extended Memory (englisch): “Windows 3.1 requires the computer user to install an extended memory manager or EMM, called HIMEM, in order to take advantage of extended memory.”
  3. a b Using MS-DOS 6.22, S. 757 Online
  4. John Dickinson: First Looks, Hands On – Windows/286, /386: More Usable Memory, More Printer Drivers, Improved Installation. In: PC Magazine. Band 7, Nr. 16. Ziff Davis, 27. September 1988, S. 38 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “One clarification is due up front: Windows/286 will run on 8088- and 8086-based PCs. … The most intriguing aspect of Windows/286 is its use of an additional 64K of 286 extended memory in real mode. That means your 640K magically becomes 704K when Windows is running. Since the basic Windows kernel has grown slightly, the Microsoft executive reported that free memory had grown by 43K from Windows 2.03. Windows/286 requires a device driver, HIMEM.SYS, to use the additional memory.”
  5. Brett Glass: DR DOS 5.0 Adds Value to Compete With the Leading Brand. In: InfoWorld. Band 13, Nr. 21, 27. Mai 1991, S. 92, Memory Management (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “DR DOS can place TSRs and drivers into the Upper Memory Block (UMB) between 640K and 1 megabyte, and it can load itself into either a UMB or the High Memory Area (HMA), just above 1 megabyte. … HIDOS.SYS can be used with other memory managers or with 8088 or 80286 systems.”
  6. Brett Glass: MS DOS 5: Reigning OS improves its value. In: InfoWorld. Band 13, Nr. 27, 8. Juni 1991, S. 64, Performance (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “MS-DOS 5.0’s memory managers have both strong and weak points relative to those of DR DOS. MS-DOS 5.0 doesn’t contain a counterpart to DR DOS’s HIDOS.SYS, which lets 286-based systems with Leap and Neat chip sets load TSRs and drivers into upper memory.”
  7. MS-DOS-6.2+6.22-Kompendium, S. 606 Online
  8. MS-DOS 6.2 User’s Guide, S. 88
  9. MS-DOS 6.22 Befehlsreferenz. DeviceHigh. In: i8086/88 Referenz. Michael Prandl, abgerufen am 29. September 2017.
  10. a b Winn L. Rosch: DR DOS 5.0 – The Better Operating System? In: PC Magazine. Band 10, Nr. 3. Ziff Davis, 12. Februar 1991, S. 241 ff., Seite 245, rechte Spalte (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “MemoryMax gives DR DOS 5.0 the ability to relocate its kernel, software drivers, and TSR utilities out of the 640K DOS memory range in computers based on 80386 and 80486 processors, as well as 286-based machines using the Chips and Technologies NEAT chip set. Separate utilities are provided in DR DOS 5.0 for controlling high memory (MEMMAX), relocating drivers in CONFIG.SYS (HIDEVICE), relocating TSR programs (HILOAD), and moving the DOS kernel to the first 64K of extended memory (HIDOS).”
  11. Chapter 10 Managing Memory. In: Caldera DR-DOS 7.02 User Guide. Caldera, Inc., 1998, archiviert vom Original (nicht mehr online verfügbar) 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.@1@2Vorlage:Webachiv/IABot/www.drdos.net
  12. MS-DOS 6.22 Befehlsreferenz. Dos. In: i8086/88 Referenz. Michael Prandl, abgerufen am 29. September 2017.
  13. PC Mag - 11. Sept. 1990, S. 422 Online
  14. 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.“
  15. Randy Kath: The Virtual-Memory Manager in Windows NT. Microsoft Developer Network Technology Group, 21. Dezember 1992, abgerufen am 29. September 2017 (englisch).
  16. Administering Windows Server 2008 Server Core - S. 627Online
  17. Peter Siering: Knapper DOS-Speicher bei Windows 95b. In: Heise online. 9. Februar 1997. Abgerufen am 4. August 2026.; Zitat: „In der Tat frißt der Treiber himem.sys hier über 40 KByte des kostbaren unteren DOS-Hauptspeichers. In der US-Version hingegen … zeigt sich himem.sys, wie gewohnt, 1 KByte schlank. Der Fehler, der himem.sys so anschwellen läßt, scheint in allen europäschen Versionen von Windows 95b zu schlummern.“.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.