Extended Memory Specification
Die Extended Memory Specification (kurz: XMS) ist eine Beschreibung, wie Programme unter dem Betriebssystem MS-DOS (und kompatible) auf den Hauptspeicher jenseits der 1-Megabyte-Grenze (den so genannten extended memory, auch als "Erweiterter Speicher" eingedeutscht) zugreifen können.
Entwicklung
Das Betriebssystem MS-DOS war für den Real Mode gedacht, ein Betriebsmodus der x86-kompatiblen Mikroprozessoren, in dem der Hauptspeicherzugriff wie beim 8086er Prozessor erfolgt. In diesem Betriebsmodus kann nur das erste Megabyte des Hauptspeichers angesprochen werden. (Wenn man von bestimmten Programmiertricks einmal absieht.)
Als die ersten PC-ATs von IBM ausgeliefert wurden, waren diese mit dem 80286er Prozessor versehen, der mehr Hauptspeicher ansprechen konnte. So kamen mit der Zeit auch PCs auf den Markt, die mit mehr als 1MiB Hauptspeicher ausgerüstet waren. Inzwischen waren die 640KiB, die unter DOS nutzbar waren, für viele Programme bereits zu klein geworden. Der Zugriff auf den extended memory war jedoch schwierig, da der Prozessor hierfür in den Protected Mode geschaltet werden musste. Vom BIOS wurde zwar eine Funktion (über den Software-Interrupt 15h) angeboten, mit der Speicherbereiche in den Extended Memory kopiert werden konnte, doch der Umgang damit war umständlich und riskant. Auch gab es keinerlei Zugriffskontrolle, falls mehrere Programme auf den Speicher zugreifen wollten.
Deshalb wurde 1988 von den Firmen Lotus Development Corp., Intel Corp., Mircosoft Corp. und AST Research Inc. eine Spezifikation erarbeitet, die den Zugriff auf den extended Memory steuern sollte. Diese ist als Extended Memory Specification veröffentlicht worden.
Zugriffsverfahren
Für den Zugriff auf den extended Memory nach XMS ist ein spezieller Treiber, der extended memory manager (XMM) zuständig. Über diesen können sich Anwendungsprogramme, aber auch andere Gerätetreiber, Speicherbereiche im extended Memory reservieren lassen, Daten kopieren und den Speicher nach Gebrauch wieder freigeben. Unter MS-DOS heißt dieser Treiber HIMEM.SYS und muss beim Hochfahren des Rechners geladen werden. Unter anderen MS-DOS-kompatiblen Betriebssystemen heißt dieser Treiber teilweise anders und ist bisweilen auch mit einem Expanded Memory Manager, der EMS bereitstellt, verknüpft.
Über den Software-Interrupt 2Fh kann der Einsprungpunkt für die Service-Routine des XMM ermittelt werden, über die der XMM seine Dienste anbietet.
Probleme
Da zum Kopieren von Daten zwischen dem DOS-Speicher und dem extended Memory vorübergehend in den Protected Mode gewechselt werden muss, ist der Zugriff auf diesen Speicher vergleichsweise langsam. Insbesondere auf 80286er CPUs, da diese zum Zurückschalten in den Real Mode einen Prozessor-Reset benötigen, der ebenfalls recht lange dauert.
Ab dem 80386er kann der extended Memory dazu genutzt werden, um so genanntes expanded memory (siehe: Expanded Memory Specification) bereitzustellen.
Da programmtechnisch die Benutzung von EMS-Speicher einfach als von XMS-Speicher ist, waren DOS-Programme, die EMS-Speicher benutzten, häufiger. Viele speicherhungrige Programme (z. B. Spiele) konnten jedeoch mit beiden Speichererweiterungen umgehen.