- LIM-EMS
-
Die Expanded Memory Specification (kurz: EMS genannt), ist eine Software-Schnittstelle zum Zugriff auf so genanntes expanded memory (oft unglücklich zu "Expansionsspeicher" eingedeutscht) auf einem x86-kompatiblen PC im Real Mode.
Heutzutage hat EMS keine praktische Bedeutung mehr, da moderne Protected-Mode-Betriebssysteme auf diese Speichererweiterung nicht mehr angewiesen sind.
Inhaltsverzeichnis
Entstehungsgeschichte
Mitte der 1980er Jahre, als das Betriebssystem MS-DOS den PC-Markt dominierte, reichten die 640 KB konventioneller Speicher, die es für Programme maximal zur Verfügung stellte, für viele größere Programme bereits nicht mehr aus. Es wurden verschiedene Lösungen realisiert, um auf mehr Arbeitsspeicher zuzugreifen. So wurden spezielle Steckkarten verkauft, die zusätzlichen Speicher enthielten. Diese Karten blendeten einen Teil ihres Speichers an einer bestimmten Stelle im 1-MB-Adressraum ein, so dass ein Programm darauf zugreifen konnte. Über spezielle Befehle konnte gesteuert werden, welcher Teil des Kartenspeichers (der oft zwischen 512 KB und 2 MB lag) im Adressraum des Prozessors eingeblendet werden soll (Memory Bank Switching). Dadurch konnte ein Programm nie den gesamten Kartenspeicher auf einmal verwenden, sondern immer nur den Teil, der gerade eingeblendet war. Diese Karten wurden memory expander genannt, und der Speicher auf ihnen expanded memory.
Diese Karten waren inkompatibel zu einander und ein Programm, das diese memory expander nutzen wollte, musste für jede dieser Karten extra Programmfunktionen besitzen. So einigten sich im Jahre 1985 die Firmen Lotus (als Hersteller der Tabellenkalkulation Lotus 1-2-3), Intel und Microsoft auf einen Standard, der LIM-EMS genannt wurde. Meistens ist dieser Standard gemeint, wenn von expanded memory die Rede ist.
LIM-EMS
LIM-EMS schreibt einen so genannten "expanded memory manager" (EMM) vor. Dies ist ein Gerätetreiber, der seine Funktionen über einen Software-Interrupt zur Verfügung stellt. Der expanded memory wird in Seiten (engl: pages) zu je 16 KB aufgeteilt. Im Adressraum wird ein 64 KB großes Fenster (engl: page frame oder page window) reserviert, in dem dann jeweils 4 EMS-Speicherseiten eingeblendet werden. Das EMS-Fenster belegt meist die Adressen D0000hex bis DFFFFhex; die 4 eingeblendeten EMS-Seiten beginnen an den Adressen D0000hex, D4000hex, D8000hex und DC000hex.
Der vom Kartenhersteller mitgelieferte EMS-Treiber (oft emm.sys genannt) bietet einen genormten Satz an Funktionen an, etwa zur Abfrage der Größe des gesamten expanded memory, der Anzahl der noch freien Seiten, das Belegen und Freigeben von Speicherseiten und natürlich das Ein- und Ausblenden bestimmter Seiten in das EMS-Fenster.
EMS ab dem 386er
Die EMS-Speicherkarten erlangten keine allzu große Verbreitung, da sie recht teuer waren. Ab dem 80386er beherrschten die Prozessoren jedoch einen speziellen Betriebsmodus, der Virtual 8086 Mode genannt wird. Mit diesem Modus lässt sich eine Real-Mode-Umgebung (wie sie DOS ja benutzt) innerhalb einer Protected-Mode-Umgebung simulieren. Im Protected Mode beherrschen die x86-kompatiblen Prozessoren ab dem 80386er außerdem die so genannte Paging-Technik mit der eine Abbildung der (virtuellen) Programmadressen auf die realen (physischen) Speicheradressen möglich wird.
Eben diese Technik ermöglicht einen Speichertreiber, der ein EMS-Fenster bereitstellt, und die Zugriffe darauf auf andere Speicherbereiche (jenseits der 1-MB-Grenze) umlenkt. Der EMS-Treiber emm386.exe, der bei MS-DOS ab Version 4.00 dabei ist oder entsprechende Pendants von Drittanbietern wie zum Beispiel qemm386.exe von Quarterdeck, ermöglicht so die Bereitstellung von EMS-Speicher, ohne dass eine EMS-Karte im Rechner vorhanden ist.
Siehe auch
Wikimedia Foundation.