Zum Inhalt springen

Expanded Memory Specification

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Expanded Memory System)

Vorlage:Hinweisbaustein Die {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) (kurz EMS genannt, oft unglücklich zu „Expansionsspeicher“<ref></ref> eingedeutscht) ist eine Schnittstelle zum Zugriff auf sogenannten {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) auf einem x86-kompatiblen PC im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value).<ref name="Roman98">Der BibISBN-Eintrag Vorlage:BibISBN/038798531X ist nicht vorhanden. Bitte prüfe die ISBN und lege ggf. einen neuen Eintrag an.</ref> Dabei regelt ein Expanded Memory Manager (mit EMM abgekürzt) den Zugriff auf den damit verwalteten Speicher.

Eigenschaften[Bearbeiten]

Die {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) ist rein für IBM-PC-kompatible Computer, „PCs“, auf Basis von 16-Bit-x86-Prozessoren 8088/8086, 80186 und ggf. auch 80286 gedacht. Mit den 8088/8086 und 80186 stand nur ein Adressraum von maximal 1 MiB in direkter Adressierung (also ohne Speicher-Management-Funktionen, der retronym so genannte {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) zur Verfügung. Diese Einschränkung gilt auch für Nachfolgeprozessoren, wenn sie im 8088/8086-kompatiblen {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) betrieben werden.

Mit EMS kann die Begrenzung auf 1 MiB physischen Speicher aufgehoben werden, indem weiterer Speicher in kleinen Teilen, als einzelne Speicherseiten, an einer bestimmten (normalerweise nicht mit RAM belegten) Stelle im 1 MiB großen Adressraum eingeblendet wird.<ref name="Roman98" /><ref>Jörg Wollert, Jörg Fiedler: Automatisieren mit dem PC. 2. Auflage. Springer, Berlin, Heidelberg 1998, ISBN 978-3-540-63271-9, 3 Betriebssysteme; 3.2 MS-DOS, S. 128 ff. „Expanded Memory (EMS) ermöglicht über eine spezielle Hardware die Zuordnung eines in 16 Kbyte große Abschnitte aufgeteilten Speichers in ebenso große Abschnitte innerhalb eines 64 Kbyte großen Fensters. Die Lage des Fensters kann beliebig verschoben werden, es muß jedoch gewährleistet sein, daß sich an dieser Stelle kein Speicher (RAM oder ROM) befindet.“</ref> Eine solche Speichererweiterung („Expansionsspeicher“) war bis zum 80186 nur in Form von Speicherkarten möglich, die als Steckkarten mit darauf verbauten Speicherbausteinen PCs erweitern. Eine derartige Speichererweiterung war zwar mit zusätzlichen Kosten verbunden, aber als damals einzige Möglichkeit waren EMS-Speicherkarten bis Mitte der 1980er Jahre bis inklusive PCs mit 80286-Prozessor – wie dem PC/AT von 1984 – noch weit verbreitet.

Datei:Expanded memory description 1.svg
Bereitstellung eines EMS-Speicherfenster aus dem Erweiterten Speicher ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))

Auf dem 80286 setzte Intel mit dem {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) einen erweiterten Betriebsmodus um, der jedoch grundsätzlich mit dem bisherigen Betriebsmodus des IBM PC und mit DOS inkompatibel ist. Gleichzeitig war es beim 80286 nie vorgesehen, zwischen den beiden Betriebsmodi hin und her zu wechseln. Hinzu kam, dass der 80286 selbst im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) inkompatibel mit der bisherigen Software war – weil der 80286 mehr Adressleitungen besitzt als noch der 8086/8088 und 80186, funktioniert der in PC DOS bzw. MS-DOS als Programmiertrick genutzte Ganzzahlüberlauf nicht mehr. Dabei wird eine Speicheradresse, die über die Grenze von 1 MiB hinausreicht, genutzt, um den Speicher am Anfang des Speicherbereichs anzusprechen, was einen Geschwindigkeitsvorteil hat. Um die volle Kompatibilität wieder herzustellen, muss ab dem 80286 eine Schaltung vorhanden sein, die die zusätzlichen Adressleitungen für den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) „abklemmt“, damit der Programmiertrick wieder funktioniert. Diese Schaltung wurde von IBM als das A20-{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), auch A20-Leitung genannt, im IBM PC/AT erstmals eingeführt und in späteren x86-Prozessoren übernommen.

Für PC-kompatibles DOS bedeutet das jedoch, dass die A20-Leitung eine wesentliche Rolle dabei spielt, ob Speicher über der 1-MiB-Grenze angesprochen werden kann oder nicht. Es stellte sich nämlich heraus, dass ein weiterer Hack ab dem 80286 den Zugriff auf fast 64 KiB zusätzlichen Speicher auch im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) ermöglicht. Dazu muss die A20-Leitung jedoch „offen“ sein, wie im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value). Dies wurde als HIMEM-Trick bekannt und ermöglichte die Nutzung der High Memory Area (HMA) auch unter DOS, erfordert jedoch die volle Kontrolle über die A20-Leitung. Gleichzeitig wurde ab dem 80286 der zusätzliche Speicher, der im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) ansprechbar ist (beim 80286 sind 16 MiB direkt adressierbar), als Erweiterter Speicher bzw. {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value) auch unter DOS erreichbar, wenn zwischen den beiden Betriebsmodi kontrolliert hin und her geschaltet wurde. Dies nutzte u. a. Windows im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) ab Windows/286. Dieser Speicher wurde für DOS in der Extended Memory Specification (XMS) standardisiert.

Auf 80286-Systemen, wo der Wechsel aus dem {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) zurück in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) nie vorgesehen war, ist dieser nur über einen „teuren“ Hack möglich. Dabei wird der Prozessor kontrolliert zurückgesetzt, was jedoch viel Zeit in Anspruch nimmt.

Damit hatte EMS gegenüber XMS-Speicher einen Geschwindigkeitsvorteil, da der Prozessor bei EMS stets im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) verbleibt.<ref>Jörg Wollert, Jörg Fiedler: Automatisieren mit dem PC. 2. Auflage. Springer, Berlin, Heidelberg 1998, ISBN 978-3-540-63271-9, 3 Betriebssysteme; 3.2 MS-DOS, S. 128 ff., S. 129: „Der Vorteil des EMS-Konzepts ist die Verwendung des ‚real mode‘ der Prozessoren. In diesem Modus wird eine einfache und damit sowohl schnelle als auch deterministische Zuordnung des logischen und physikalischen Speichers vorgenommen. Damit ist dieser Modus für harte Echtzeitanforderungen im Gegensatz zu den anderen Modi besonders geeignet. Die Verwendung von EMS-Speicher ermöglicht die Berücksichtigung von größeren Speicherbereichen, ohne in einen anderen Modus schalten zu müssen.“</ref> Erst auf Systemen mit Intel 80386-Prozessor, der zusätzlich einen 32-Bit-{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bietet, konnte XMS-Speicher ohne diesen Geschwindigkeitsnachteil angesprochen werden.

Der über EMS verfügbare zusätzliche Speicher ist für Daten gedacht. Das direkte Ausführen von Programmcode in den eingeblendeten Speicherseiten ist im Regelfall nicht möglich.<ref>Jörg Wollert, Jörg Fiedler: Automatisieren mit dem PC. 2. Auflage. Springer, Berlin, Heidelberg 1998, ISBN 978-3-540-63271-9, 3 Betriebssysteme; 3.2 MS-DOS, S. 128 ff., S. 130: „Die Struktur des EMS-Speichers ist vor allem für die Ablage von umfangreichen Daten geeignet, wie sie z. B. in der Meß- oder Betriebsdatenerfassung vorkommen. Die direkte Ausführung von Code im EMS-Speicher ist nur über spezielle Verwaltungsmechanismen möglich, die vom EMM-Treiber in der Version 3.x nicht berücksichtigt werden.“</ref>

Bei 32-Bit-Systemen hat EMS keine praktische Bedeutung mehr, weil moderne Betriebssysteme und Prozessoren ausreichend Adressraum haben, und PC-Betriebssysteme wie DOS, OS/2 und Windows im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) diesen Adressraum auch nutzen können. x86-Prozessoren ab dem 80386, der die 32-Bit-x86-Architektur „IA-32“ begründet, unterstützen auch flexibles Speichermanagement mit virtuellem Speicher. Auch auf PCs unter DOS, weiterhin ein 16-Bit-Betriebssystem, etablierte sich ab dem 80386er virtueller Expansionsspeicher (siehe EMS ab dem 386er), der mit den Speicherverwaltungsmethoden des {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) im „Erweiterten Speicher“ (als XMS bezeichnet) emuliert wird, als besserer Ersatz und daher als Nachfolger von EMS-Speicherkarten. Auf dem 80286, der als 16-Bit-Architektur ebenfalls Speicher bis 16 MiB in Form von XMS unterstützt, wurde zwar später prinzipiell auch virtueller EMS-Speicher möglich, aber weniger effizient als auf dem 386er und neueren x86-Prozessoren. Zudem ersetzte XMS auch in Programmen zunehmend EMS, da er einfacher zu bedienen ist als andere Methoden.

Entstehungsgeschichte[Bearbeiten]

Datei:EmulexPersyst 4M ISA.jpeg
Emulex Persyst 16 Bit ISA-Karte mit 4 MiB RAM

Mitte der 1980er Jahre, als das Betriebssystem MS-DOS den PC-Markt dominierte, reichten die 640 KiB 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 oft zwischen 512 KiB und 2 MiB zusätzlichen Speicher enthielten. Diese Karten blenden einen Teil ihres Speichers an einer bestimmten Stelle im 1-MiB-Adressraum ein – diese Technik wird als {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bezeichnet –, so dass ein DOS-Programm, das mit EMS umgehen kann, darauf zugreifen kann. Der eingeblendete Teil selbst darf bis zu ca. 64 KiB groß sein.<ref>https://books.google.de/books?id=pDGnxFyejN4C&lpg=PA170&hl=de&pg=PA156#v=onepage&q&f=false More Options For enlarging the Dimensions of Memory by Charles Petzold, Test von Expanded Memory Karten (englisch)</ref> Über spezielle Befehle kann gesteuert werden, welcher Teil des Kartenspeichers im Adressraum des Prozessors eingeblendet werden soll. Mit dieser Technik kann ein Programm nie den gesamten Kartenspeicher auf einmal verwenden, sondern immer nur den Teil, der gerade eingeblendet ist. Die Speicherkarten wurden {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) genannt (von {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value) für deutsch u. a. expandieren, ausdehnen oder ausbauen). Dementsprechend wird der Speicher, der so zusätzlich zur Verfügung steht, mit {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bezeichnet.

Anfangs waren EMS-Speicherkarten zueinander inkompatibel und ein Programm, das diese {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) unterstützte, musste für die spezielle Speicherkarte eigene Programmfunktionen besitzen. Da das sehr unpraktikabel war, einigten sich im Jahre 1985 die Firmen Lotus (als Hersteller der Tabellenkalkulation Lotus 1-2-3), Intel und Microsoft auf einen Standard: LIM-EMS. Bei Programmen ab 1985 ist daher in der Regel dieser Standard gemeint, wenn von {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) die Rede ist.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Expanded Memory Manager[Bearbeiten]

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.LIM-EMS[Bearbeiten]

LIM-EMS („LIM“ steht für Lotus, Intel und Microsoft) schreibt einen so genannten „{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)“ (EMM) vor. Dies ist ein Gerätetreiber, der seine Funktionen über einen Software-Interrupt zur Verfügung stellt. Der {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), eingedeutscht auch oft „EMS-Speicher“ (neben „Expansionsspeicher“), wird in Seiten ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) zu je 16 KiB aufgeteilt. Beim Design des IBM PC wurde ein Teil der Speicheradressen für das System reserviert. Dieser Speicherbereich zwischen 640 KiB und 1024 KiB an den Adressen Vorlage:Monospacehex bis Vorlage:Monospacehex wurde später Oberer Speicherbereich (UMA, {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) bezeichnet. Darin können u. a. Erweiterungskarten, die in den dafür vorgesehenen Steckplätzen zahlreiche zusätzliche Funktionen übernehmen können, deren Firmware oder spezifischen Gerätespeicher (RAM) bereitstellen. Speichererweiterungskarten nutzen diesen Adressraum für das 64 KiB große Speicherfenster ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) oder {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)), das somit oberhalb des als Arbeitsspeicher für Programme genutzten Konventionellen Speichers liegt. Darin können jeweils 4 EMS-Speicherseiten eingeblendet werden. Da die tatsächlichen Adressen vom jeweiligen System abhängen (und damals im Allgemeinen nicht nur beim ISA-Bus manuell festgelegt werden müssen, z. B. auf der Erweiterungskarte selbst), können sie variieren, meist jedoch belegt das EMS-Fenster die Adressen Vorlage:Monospacehex bis Vorlage:Monospacehex; die 4 eingeblendeten EMS-Seiten beginnen dann an den Adressen Vorlage:Monospacehex, Vorlage:Monospacehex, Vorlage:Monospacehex und Vorlage:Monospacehex.

Datei:Expanded memory.svg

Der Speicher, aus dem die 64 KiB Fenster eingeblendet werden, konnte anfangs selbst bis zu ca. 8 MiB groß sein. Bei LIM-EMS 4.0 kann bis zu 32 MiB EMS-Speicher verwendet werden.<ref>Hans C. Nieder: MS-DOS 6.2 + 6.22: Das Kompendium; komplette Übersicht aller Funktionen. Markt+Technik Verlag, 1999, ISBN 3-8272-5693-3, Expansionsspeicher bzw. Expanded Memory (EMS), S. 607 (eingeschränkte Vorschau in der Google-BuchsucheSkriptfehler: Ein solches Modul „Vorlage:GoogleBook“ ist nicht vorhanden.): „Mit EMS 4.0 können bis zu 32 Mbyte Expansionsspeicher installiert werden.“</ref> Zur Funktion unter DOS bietet der vom Kartenhersteller mitgelieferte EMS-Treiber (oft EMM.SYS oder eine Variation davon) einen genormten Satz an Funktionen an, etwa zur Abfrage der Größe des gesamten {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), 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. Für Programme mit EMS-Unterstützung bietet der EMS-Treiber die Funktionen per Software-Interrupt 67hex an.<ref name="Yale">INT 67 - Expanded Memory Specification. In: flint.cs.yale.edu. Yale University, abgerufen am 26. Dezember 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

EMM beim 80286[Bearbeiten]

Der 80286-Prozessor kann bis zu 16 MiB adressieren. Wie beim Nachfolger 80386 wäre emulierter EMS-Speicher eine Möglichkeit gewesen, ohne teure EMS-Erweiterungskarten an EMS-Speicher zu kommen. Allerdings wurde der 80286 entworfen, um vom Betriebssystem in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) umgeschaltet zu werden, wo die gesamten 16 MiB adressierbar sind, und in diesem Modus dann auch zu verbleiben – ein Zurückschalten oder eine Hardware-unterstützte Emulation des {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)-Betriebs (wie später beim 80386) war beim 80286 nicht vorgesehen. Zwar startet aus Gründen der Kompatibilität auch der 80286 (wie alle späteren x86-Prozessoren der nächsten Jahrzehnte) weiterhin im 8088/8086-kompatiblen {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), doch in diesem Modus sind, wie gehabt, nur 1 MiB RAM erreichbar.

Datei:86Box Arche AMA-2010 Phoenix 286-NEAT-BIOS chipset EMS setup.png
Chipsatz-BIOS-Setup eines NEAT-286-PCs (Arche AMA-2010, emuliert unter 86Box): hier eingestellt sind 1 MiB LIM-EMS, die von den verfügbaren 4 MiB RAM (konfiguriert in 86Box) abgezweigt werden

Das Problem war jedoch, dass das 16-Bit-Betriebssystem MS-DOS und PC DOS sowie dafür geschriebene Programme weiterhin den Markt beherrschten, sodass auch der 80286 unter DOS stets im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) betrieben wurde. Betriebssysteme, die den 16-Bit-{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) des 286er nutzten – wie bspw. Xenix 286 oder OS/2 – waren die Ausnahme bzw. hatten nicht dieselbe Verbreitung wie DOS.<ref></ref> Deshalb wurden vielfach die für den 8088/8086 entwickelten EMS-Speicherkarten weiterverwendet. Nach und nach wurden auch spezielle, zwar teurere Chipsätze für den 80286 entwickelt, die LIM-EMS durch Adressspeicherumschaltung ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) innerhalb der maximal möglichen 16 MiB emulieren können, was in Summe aber die noch teurere Anschaffung einer EMS-Zusatzkarte ersetzen konnte (und obendrein einen Steckplatz spart). Der NEAT-Chipsatz von Chips & Technologies bietet als einer der ersten Chipsätze überhaupt im BIOS-Setup eine flexible Konfiguration, u. a. auch von emuliertem EMS aus dem über 1 MiB hinausgehenden verbauten RAM. Die Größe des zu emulierenden EMS-Speichers ist einstellbar, der dafür konfigurierte RAM ist dann allerdings nicht mehr als XMS („{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)“) nutzbar. Wird mehr XMS-Speicher unter DOS benötigt, muss folglich im BIOS-Setup die eingestellte EMS-Speichergröße verringert werden. Die verschiedenen Chipsätze sind zueinander inkompatibel. Oft sind die von den unterschiedlichen Herstellern der 286er-Mainboards bereitgestellten DOS-Treiber die einzige Möglichkeit, den emulierten EMS-Speicher gemäß LIM-EMS unter DOS bereitzustellen, wie es zuvor auch bei den EMS-Speicherkarten bereits der Fall ist. Der Treiber, oft EMM.SYS oder eine Variation davon, muss noch vor anderen Speichermanagern wie Vorlage:Monospace und DPMS geladen werden.

LIMulator[Bearbeiten]

Im Englischen wurden DOS-Dienste, die EMS-Speicher ohne eigene EMS-Hardware simulieren, auch als LIMulator (ein Wortspiel auf Simulator mit LIM-EMS) bezeichnet.<ref></ref><ref></ref><ref></ref>

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.EMM386[Bearbeiten]

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 {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bzw. kurz VM86 genannt wird. Mit diesem Modus lässt sich eine {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)-Umgebung (wie sie DOS benutzt) innerhalb einer {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)-Umgebung emulieren. Im {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) beherrschen x86-kompatible Prozessoren ab dem „i386“ dank vorhandener Speicherverwaltungseinheit (MMU, {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) außerdem die so genannte {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)-Technik, mit der eine virtuelle Abbildung der Programmadressen auf davon abweichenden realen (physischen) Speicheradressen möglich wird.

Beide Techniken gemeinsam ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) und {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) ermöglichen einen Speichertreiber, der ein EMS-Fenster bereitstellt, dessen Zugriffe auf Speicherbereiche jenseits der 1-MiB-Grenze umgelenkt werden. Damit ermöglicht ein solcher EMS-Treiber die Bereitstellung von EMS-Speicher, ohne dass eine reale EMS-Speicherkarte im Rechner vorhanden ist. Die erste Version eines solchen EMS-Emulations-Treibers wurde als Vorlage:Monospace von Compaq für den DeskPro 386 entwickelt. Der Standard-EMS-Treiber wurde schließlich EMM386.EXE von Microsoft, der mit MS-DOS ab Version 4.00 mitgeliefert wird. Dazu gibt es auch entsprechende Pendants anderer zu MS-DOS kompatibler DOS-Versionen, z. B. DR DOS, oder Speichermanager mit EMS-Funktion von Drittanbietern, z. B. QEMM oder 386Max, die mit den meisten gängigen DOS-Versionen kompatibel sind.

EMM286[Bearbeiten]

Als nach einiger Zeit ein Workaround gefunden wurde, den 80286-Prozessor wieder geordnet in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) zurückfallen zu lassen, wurde es möglich, analog zu EMM386 einen allgemeinen EMS-Treiber zu entwickeln, der nur in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) schaltet, um die gewünschte EMS-Seite ins untere 1 MiB zu kopieren, und anschließend wieder in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) zurückkehrt. Damit war EMS-Speicher zwar auch für den 80286 ohne teure Zusatzkarte und ohne speziellen Chipsatz verwendbar, zu einer größeren Verbreitung kam es angesichts zwei entscheidender Nachteile allerdings nicht: Zum einen dauert das Zurückfallen aus dem {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) beim 286er deutlich länger als beim moderneren 386er, zum anderen muss der Vorlage:Monospace-Treiber das 64 KiB große Speicherfenster im Konventionellen Speicher bereitstellen – da Upper Memory Blocks (UMBs) auf 286-Hardware nur mit entsprechender Hardware (Chipsatz, Erweiterungskarten) und in Zusammenarbeit mit den dafür nötigen DOS-Treibern überhaupt erst möglich sind. Dadurch wird der freie Speicher für DOS-Programme um 64 KiB beschnitten, was entscheidend sein kann. Beide Nachteile bestehen sowohl bei einem 286er-Chipsatz, der EMS im Erweiterten Speicher unterstützt (mit dem dafür vorgesehenen EMS-Treiber, siehe EMM beim 80286), als auch beim 80386-Prozessor (siehe EMM386) nicht.

Nachfolge[Bearbeiten]

Als Nachfolger von EMS kann XMS gesehen werden. Dennoch wurde EMS-Speicher auch nach der Verfügbarkeit von XMS noch lange Zeit von DOS-Programmen unterstützt. Gerade bei 16-Bit-DOS-Programmen ergab sich der Vorteil, auch auf älteren PCs, wie etwa dem originalen IBM Personal Computer mit EMS-Erweiterungskarte, kompatibel zu bleiben, und gleichzeitig auf modernen PCs mit 386er-Prozessor und neuer uneingeschränkt ausgeführt werden zu können.

Aus Mangel an Software-Unterstützung wurde Erweiterter Speicher ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) zudem anfangs hauptsächlich für RAM-Disks genutzt.<ref></ref>

Beide Speicherarten (EMS und XMS), die ab dem 80286er zur Verfügung stehen, sind nur unter 16-Bit-Betriebssystemen wie allen voran PC-kompatiblem DOS überhaupt notwendig, weil DOS der Kompatibilität wegen weiterhin am zum 8088/8086-kompatiblen Konventionellen Speicher festhalten musste. Für 32-Bit-DOS-Anwendungen ist XMS jedoch klar im Vorteil, sodass diese EMS nicht mehr unterstützten.

XMS[Bearbeiten]

Mit XMS ermöglichen standardisierte DOS-Extender für VCPI und DPMI eingeschränktes Multitasking, während DOS-Programme, die selbst in den {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) schalten, zwar Zugriff auf den gesamten Speicher haben, aber weiterhin nur exklusiv laufen können.<ref></ref> Nach und nach wurden viele Programme unter DOS von EMS nach XMS portiert, um von den Vorteilen zu profitieren.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />