Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier. 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 x86 -kompatiblen PC im Real Mode .
Heutzutage hat EMS keine praktische Bedeutung da moderne Protected Mode -Betriebsssteme auf diese Speichererweiterung nicht mehr angewiesen
Mitte der 1980er Jahre als das Betriebssystem MS-DOS den PC-Markt dominierte reichten die 640 kiB Arbeitsspeicher die es für Programme maximal Verfügung stellte für viele größere Programme bereits mehr aus. Es wurden verschiedene Lösungen realisiert auf mehr Arbeitsspeicher zuzugreifen. So wurden spezielle verkauft die zusätzlichen Speicher enthielten. Diese Karten einen Teil ihres Speichers an einer bestimmten im 1-MiB- Adressraum ein so dass ein Programm darauf konnte. Über spezielle Befehle konnte gesteuert werden welcher Teil des Kartenspeichers (der oft zwischen und 2MiB lag) im Adressraum des Prozessors werden soll. Dadurch konnte ein Programm nie gesamten Kartenspeicher auf einmal verwenden sondern immer den Teil der gerade eingeblendet war. Diese wurden memory expander genannt und der Speicher auf ihnen expanded memory .
Leider waren diese Karten inkompatibel zu und ein Programm das diese memory expander nutzen wollte musste für jede dieser extra Programmfunktionen besitzen. So einigten sich im 1988 die Firmen Lotus (als Hersteller der Lotus 1-2-3) Intel und Microsoft auf einen der LIM-EMS genannt wurde. Meist dieser Standard wenn von expanded memory die Rede ist.
LIM-EMS schreibt einen so genannten "expanded manager" (EMM) vor. Dies ist ein Gerätetreiber der seine Funktionen über einen Software-Interrupt Verfügung stellt. Der expanded memory wird in Seiten (engl: pages ) zu je 16 kiB aufgeteilt. Im wird ein 64 kiB großes Fenster (engl: page frame oder page window ) reserviert in dem dann jeweils 4 eingeblendet werden. Das EMS-Fenster belegt meist die 0xD0000-0xDFFFF; die 4 eingeblendeten EMS-Seiten beginnen an Adressen 0xD0000 0xD4000 0xD8000 und 0xDC000.
Der EMS-Treiber (oft emm.sys genannt) bietet einen genormten Satz an an etwa zur Abfrage der Größe des expanded memory der Anzahl der noch freien Seiten Belegen und Freigeben von Speicherseiten und natürlich Ein- und Ausblenden bestimmter Seiten in das
Die EMS-Speicherkarten erlangten jedoch keine große da sie recht teuer waren. Ab dem 80386er beherrschten die Prozessoren jedoch einen speziellen der Virtual_8086_Mode genannt wird. Mit diesem Modus lässt eine Real-Mode-Umgebung (wie sie DOS ja benutzt) einer Protected-Mode-Umgebung simulieren. Im Protected Mode beherrschen die x86 -kompatiblen Prozessoren außerdem die so genannte Paging-Technik mit der eine Abbildung der (virtuellen) auf die realen (physischen) Speicheradressen möglich wird.
Eben diese Techik ermöglicht einen Speichertreiber ein EMS-Fenster bereitstellt und die Zugriffe darauf andere Speicherbereiche (jenseits der 1-MiB-Grenze) umlenkt. Der emm386.sys der bei MS-DOS ab Version 5.0 ist (oder entsprechende Pendants von Drittanbietern) ermöglicht die Bereitstellung von EMS-Speicher ohne dass eine im Rechner vorhanden ist.
HTML-Code zum Verweis auf diese Seite: <a href="http://www.uni-protokolle.de/Lexikon/Expanded_Memory_Specification.html">Expanded Memory Specification </a>