EMM386
Vorlage:Hinweisbaustein
Vorlage:Monospace – für Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. 386 – ist eine DOS-Speicherverwaltung für PCs mit Intel 80386-Prozessor. Der Name kommt von den gleichnamigen Systemdateien EMM386.SYS und EMM386.EXE, die ab 1987 in den DOS-Versionen MS-DOS und PC DOS (ab Version 3.0) und in den DOS-basierenden Windows-Versionen (ab Windows 2.0) zur Verwaltung von Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (UMBs) und emulierten Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (EMS) eingesetzt wurden. Dazu versetzt Vorlage:Monospace den Prozessor in den Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. und verwendet Erweiterten Speicher (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., XMS), der mittels Speicherverwaltungseinheit (MMU) an Speicheradressen innerhalb des Oberen Speicherbereichs (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., UMA) eingeblendet wird.
Ab MS-DOS 5.0 enthält EMM386.EXE einen VCPI-Server für damit kompatible DOS-Extender.
Geschichte[Bearbeiten]
Die erste Version des „Compaq Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“ wurde mit dem Compaq Deskpro 386 ab September 1986 als CEMM.EXE, gemeinsam mit Compaq DOS 3.31, einer OEM-Version von MS-DOS, ausgeliefert. Diese erste Version war aus der Idee heraus geboren, sich die Fähigkeiten des 80386-Prozessors unter DOS zunutze zu machen. PC-kompatibles DOS, ein reines Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.-Betriebssystem, kann keinen Speicher über 1 MiB adressieren. Mehr Arbeitsspeicher hätte nur ein vollkommen anderes Betriebssystem bereitstellen können, das im Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. läuft, wie z. B. Xenix (ein PC-Unix von Microsoft) oder OS/2.
Für DOS gab es allerdings Ende der 1980er Jahre bereits eine Vielzahl an Anwendungssoftware, ebenso wie bereits sogenannte „Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“-Speichererweiterungen, die als Steckkarten in IBM-kompatiblen PCs zusätzlichen RAM für Daten zur Verfügung stellen konnten. Compaq machte sich die vorhandenen Gegebenheiten zunutze, für die bereits bestehenden DOS-Anwendungen, die EMS-Speicher unterstützen, mit dem Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. eine solche Speicherkarte nach dem LIM-EMS-Standard 3.2 zu emulieren. Die erste bekannte Vorlage:Monospace-Version trug vermutlich deshalb ebenfalls die Versionsnummer 3.20.<ref>Michal Necasek: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Blog) In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Dazu nutzt Vorlage:Monospace die Speicherverwaltungseinheit des 32-Bit-x86-Prozessors „Intel 80386“, um Arbeitsspeicher über der 1-MiB-Grenze – sogenannter „Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“ bzw. „erweiterter Speicher“ – in Form eines Speicherfensters innerhalb des oberen Speicherbereichs (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., UMA) einzublenden, wo der Zugriff auch im Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. möglich ist. Gleichzeitig vermeidet die Nutzung der UMA eine weitere Verknappung des für Programme so wichtigen Konventionellen Speichers – etwas, das auf den Systemen bis zum Intel 80286 davor nicht ohne spezielle Chipsätze möglich war.
Da es klar war, dass RAM-Speicherbausteine, die in PCs in Speichersteckplätzen auf den Hauptplatinen verbaut werden, in Zukunft erweitert würden (bereits der 80286 unterstützt im 16-Bit-Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. bis zu 16 MiB RAM, beim 32-Bit-80386 sind bereits 4.096 MiB RAM adressierbar), und weil das Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. von Speicher auf jedem i386-PC möglich ist, wurde ab 1988 der Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. als EMM386.SYS in MS-DOS 4.00/4.01 wie auch DR DOS 3.40 übernommen und um die Bereitstellung von Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (UMBs) erweitert. Ab 1991, mit der Verbreitung von MS-DOS/PC DOS 5.x, wurde eine deutlich verbesserte Version EMM386.EXE eingeführt, die u. a. auch VCPI – und damit VCPI-DOS-Extender – unterstützt.
Funktionsweise[Bearbeiten]
Die EMM386.EXE bzw. EMM386.SYS kann durch Einstellungen in der Vorlage:Monospace konfiguriert und angepasst werden. Zusätzlich kann EMM386.EXE von der Kommandozeile aus aufgerufen werden und so aktuelle Einstellungen anzeigen oder in stark eingeschränktem Umfang Konfigurationsänderungen vornehmen. Je nach Hersteller setzen einige Vorlage:Monospace-Versionen einen geladenen Vorlage:Monospace-Treiber voraus, da dieser den Zugriff auf den erweiterten Speicher „Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“ (Arbeitsspeicher über der 1-MiB-Grenze, standardisiert als XMS) regelt.
Funktionen[Bearbeiten]
Emulation von Expanded Memory[Bearbeiten]
Der Treiber EMM386.SYS oder EMM386.EXE stellt DOS-Programmen, die nur Arbeitsspeicher aus dem unteren Bereich (unter 1 MiB) adressieren können, seitenweise zusätzlichen Speicher aus dem Speicherbereich oberhalb von 1 MiB zur Verfügung. Hierzu benötigt er ein Speicherfenster (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. oder auch Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.) im Speicherbereich des Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. unterhalb der 1-MiB-Grenze (dem Konventionellen Speicher), bevorzugt im Bereich zwischen 640 KiB und 1 MiB (unter DOS der sogenannte obere Speicherbereich oder auch Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.). In dieses typischerweise 64 KiB große Fenster werden dann beliebige jeweils 16 KiB große Speicherseiten (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.) aus dem erweiterten Speicher („Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“) eingeblendet. Zusätzlich verwaltet Vorlage:Monospace die verfügbaren Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., das sind freie zusammenhängende Blöcke im oberen Speicher (UMA) mit teils weniger als 16 KiB (die Größe muss nur ein ganzzahliges Vielfaches von 16 Bytes sein).
Zur Nutzung müssen DOS-Programme EMS per Spezifikation „LIM-EMS“ oder UMBs (oder beides) unterstützen und per definierter Schnittstelle anfordern. Zum Zugriff auf das EMS-Speicherfenster wählt das betreffende Programm zunächst die gewünschte Seite, sodass Vorlage:Monospace diese einblendet und das Programm damit arbeiten lässt. Durch Wechseln der Seite – die neue Seite wird an der gleichen Adresse eingeblendet – können alle Bereiche des erweiterten Speichers genutzt werden. Aus Sicht des Programms wird in jedem Fall nur mit Speicheradressen aus dem unteren Speicher bis 1 MiB agiert.
Vorlage:Monospace 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 den Prozessor an sich gar nicht adressierbare Speicherbereiche mittels einer speziellen Bank-Switching-Hardware einblendeten, verwendet Vorlage:Monospace ausschließlich „Bordmittel“ der 386er- und neueren x86-Prozessoren. Damit das funktioniert wird der Prozessor allerdings aus dem unter DOS üblichen Real-Modus in den Virtual-8086-Modus geschaltet, womit einige sehr hardwarenah arbeitende Programme und einige Programme, die spezielle Speicherverwaltungstricks verwenden, nicht kompatibel sind.
Der Intel 80186 und seine Vorgänger haben keine Speicherverwaltungseinheit und bieten somit auch keine Einblendung von Speicher an anderen Adressen, prinzipbedingt kann daher EMS-Speicher nur über die speziellen EMS-Steckkarten, auch Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.-Karten genannt, realisiert werden.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Beim Intel 80286, der ebenfalls noch keine Speicherverwaltungseinheit (MMU, „Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“) besitzt, ist diese Fähigkeit abhängig vom Chipsatz des Mainboards. So gibt es bspw. erweiterte Chipsätze wie den NEAT-Chipsatz, mit dem es auf dem „286er“ möglich ist, per Adressspeicherumschaltung und ohne reale EMS-Speichererweiterungskarte bis zu 8 MiB EMS-Speicher aus erweitertem Speicher zu simulieren. Wie bei EMS-Karten auch ist dazu allerdings ein extra für den Chipsatz geschriebener Treiber notwendig – der den verschiedenen DOS-Versionen beiliegende Vorlage:Monospace-Treiber eignet sich dafür nicht. Zwar gibt es einen allgemeinen Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. für PC/AT-kompatible 286-Rechner, wegen der auf 80286-Rechnern fehlenden Fähigkeit zur Nutzung der UMA als Arbeitsspeicher muss das EMS-Speicherfenster damit jedoch im konventionellen Speicher vorgehalten werden<ref>Jjex Software: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2018-01-07 (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und der Zugriff auf EMS-Speicher ist – im Vergleich mit EMS-Speicherkarten und der EMS-Emulation auf einem i386 mit Vorlage:Monospace – sehr langsam, weil der Moduswechsel zwischen Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. und Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. auf dem 80286, der undokumentiert und daher nur durch einen Hack möglich ist, ebenfalls sehr langsam vonstattengeht.
Upper Memory Blocks[Bearbeiten]
Skriptfehler: Ein solches Modul „Vorlage:Siehe auch“ ist nicht vorhanden.
Neuere Versionen von Vorlage:Monospace bieten zusätzlich oder anstelle der EMS-Verwaltung eine weitere, konzeptionell unabhängige Funktion an: Treiber und andere residente Programme können in Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (UMBs) geladen werden. Dazu werden die Befehle DEVICEHIGH und LOADHIGH bzw. LH verwendet. Hierdurch kann weiterer Konventioneller Speicher für DOS-Anwendungsprogramme (unter der 640-KiB-Grenze) freigehalten werden.
Durch die Nutzung von UMBs bleiben unter MS-DOS 5.0 üblicherweise ca. 40 KiB mehr an Konventionellem Speicher für DOS-Programme frei. Auch Windows 3.0 nutzt die von DOS verwalteten UMBs und lagert Teile dorthin aus, was speziell DOS-Programmen, die unter Windows gestartet werden, mehr Speicher übrig lässt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>
VCPI[Bearbeiten]
Ab MS-DOS/PC DOS 5.0 und DR DOS 6.0,<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> beide von 1991, stellt Vorlage:Monospace auch VCPI zur Verfügung, da sonst einige DOS-Extender nicht funktionieren. Wenn EMS deaktiviert wird, muss Speicher für VCPI explizit zugewiesen werden. Ab der mit MS-DOS 6.0 und Windows für Workgroups verteilten Version von Vorlage:Monospace wird auch beim Parameter NOEMS VCPI bereitgestellt, kann jedoch explizit mit dem Parameter NOVCPI abgeschaltet werden.<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Microsoft, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2002 (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Ablöse[Bearbeiten]
Moderne PC-Betriebssysteme schalten den Prozessor eines IBM-PC-kompatiblen Computer gleich beim Start des Kernels in den Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (32-Bit) oder Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. (64-Bit), womit der gesamte physische Hauptspeicher zur Verfügung steht („Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.“) und derartige Umwege über EMS und Zusatztreiber, wie es unter DOS im Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. noch erforderlich war, nicht mehr notwendig sind.
Eine ähnliche Technik wird bei Windows auf 32-Bit-Systemen angeboten: Man nennt sie AWE (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.). Eine passende Hardware mit PAE-Unterstützung vorausgesetzt, stellt diese Technik Speicher, der jenseits der durch die 32-Bit-Adressierung bedingten 4-GB-Grenze liegt, ebenfalls in Fenstertechnik (ähnlich wie bei EMS) zur Verfügung. AWE wurde von einigen speicherintensiven Programmen, wie dem Microsoft SQL Server, verwendet. Durch die Verbreitung von 64-Bit-Betriebssystemen ist jedoch auch diese Fenstertechnik inzwischen nicht mehr von Bedeutung.
Weblinks[Bearbeiten]
- Michal Necasek: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Blog) In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.
Siehe auch[Bearbeiten]
Einzelnachweise[Bearbeiten]
<references />