- EMM386
-
Emm386.exe (auch Emm386.sys) ist eine Systemdatei die ab 1987 in DOS-Versionen ab 3.0 und in DOS basierenden Windows-Versionen ab Version 2.0 zur Speicherverwaltung eingesetzt wurde. Sie dient der Verwaltung des erweiterten Speichers (Expanded Memory) auf Rechnern mit i386 (und höher) CPU. In diesem Zusammenhang wird auch von LIM-EMS (Lotus-Intel-Microsoft) Speicher oder eingedeutscht von „Expansionsspeicher“ gesprochen.
Die Emm386.exe (auch Emm386.sys) kann durch Einstellungen in der Config.sys konfiguriert und angepasst werden. Zusätzlich kann Emm386.exe von der Kommandozeile aus aufgerufen werden und so aktuelle Einstellungen anzeigen oder in stark eingeschränkten Umfang Konfigurationsänderungen vornehmen. Je nach Hersteller setzen einige Emm386-Versionen einen geladenen Himem.sys Treiber voraus.
Vermutlich kam die erste Version ab 1987 als Compaq CEMM.SYS mit Compaq DOS 3.31, einer OEM-Variante von MS-DOS, erstmals in Verbreitung. Ab etwa 1988 etablierte sich der Name EMM386.SYS für die Expanded-Memory-Manager von MS-DOS- und DR-DOS-Versionen, die zur Bereitstellung der Expanded-Memory-Seiten eine CPU ab Intel i386 benötigten. Ab 1991, mit der Verbreitung von MS-DOS 5.x wurde eine deutlich verbesserte Version EMM386.EXE eingeführt.
Funktionsweise
Der Treiber Emm386.exe stellt DOS-Programmen, die nur Arbeitsspeicher aus dem unteren Bereich (unter 1 MB) adressieren können, seitenweise zusätzlichen Speicher aus dem hohen Speicherbereich (oberhalb von 1 MB) zur Verfügung. Hierzu benötigt der Manager ein Speicherfenster (engl. page frame oder auch page window) im unteren Speicherbereich, bevorzugt im Bereich zwischen 640 KB und 1 MB (UMB). In dieses typischerweise 64 KB große Fenster werden dann beliebige jeweils 16 KB große Speicherseiten (engl. pages) aus dem hohen Speicher eingeblendet. Man kann allerdings auch UMBs mit weniger als 16 KB verwenden (die Größe muss nur ein ganzzahliges vielfaches von 16 Bytes sein). Zum Zugriff wählt das betreffende Programm zunächst die gewünschte Seite an, der EMM386 blendet diese Seite ein und lässt das Programm mit dieser Seite arbeiten. Durch Wechseln der Seite - die neue Seite wird an der gleichen Adresse eingeblendet - können alle Bereiche des hohen Speichers genutzt werden. Aus Sicht des Programmes wird in jedem Fall nur mit Speicheradressen aus dem unteren Speicher agiert.
EMM386 erreicht so aus Softwaresicht den gleichen Effekt wie die ursprünglichen, für spezielle EMS-Steckkarten ausgelegten Expansionsspeicher-Treiber. Während diese allerdings eigene, für die CPU an sich gar nicht adressierbare Speicherbereiche mittels einer speziellen Bank-Switching-Hardware einblendeten, verwendet EMM386 ausschließlich "Bordmittel" der Intel i386 und höheren Prozessoren. Als Nebeneffekt wird der Prozessor dabei allerdings aus dem unter DOS üblichen Real-Modus in den sogenannten V86-Modus geschaltet, womit einige sehr hardwarenah arbeitende Programme und einige Programme, die spezielle Speicherverwaltungstricks verwenden, nicht kompatibel sind. Der Intel 80286 und seine weiteren Vorgänger bieten die Einblendung von Speicher an anderen Adressen noch nicht an, hier kann daher prinzipbedingt EMS-Speicher nur über die speziellen EMS-Steckkarten realisiert werden.
Neuere Versionen vom EMM386 bieten zusätzlich oder anstelle der EMS-Verwaltung eine weitere, konzeptionell unabhängige Funktion an: Treiber und andere residente Programme können in Upper Memory Blocks (UMBs) geladen werden. Dazu werden die Befehle DEVICEHIGH und LOADHIGH (kurz LH) verwendet. Hierdurch konnte weiterer Speicher für DOS-Anwendungsprogramme (unter der 640 KB Grenze) freigehalten werden.
Bei moderneren Betriebssystemen entfallen derartige Zusatztreiber, sie verfügen über einen Betriebssystemkern (Kernel) mit integriertem Memorymanagement. Auch können die für diese Betriebssysteme entwickelten Programme mittlerweile mit 4 GB Arbeitsspeicher (oder mehr) umgehen.
Eine ähnliche Technik wird auch heute bei Betriebssystemen, die auf 32-Bit-Technologie beruhen, eingesetzt. Man nennt sie PAE (Physical Address Extension) oder auch AWE (Address Windowing Extension). Eine passende Hardware vorausgesetzt, stellt diese Technik Speicher, der jenseits der durch die 32-Bit-Adressierung bedingten 4-GB-Grenze liegt, ebenfalls in Fenstertechnik, zur Verfügung. Durch die Verbreitung von 64-Bit-Betriebssystemen mit 64-Bit-Prozessoren und dazugehöriger Hardware, wird auch diese Fenstertechnik bald bedeutungslos werden.
Siehe auch
Wikimedia Foundation.