DOS Protected Mode Interface

aus Wikipedia, der freien Enzyklopädie

DOS Protected Mode Interface, kurz DPMI, ist eine Programmierschnittstelle (API, englisch Application Programming Interface) zur Entwicklung von Computerprogrammen im

auf der x86-Architektur. Damit umgehen sie die Limitierungen des bis dahin genutzten

, in dem der sogenannte „konventionellen Speicher“ mit 640 KiB (655.360 Byte, siehe auch UMB) limitiert ist.

Geschichte

DPMI wurde ursprünglich 1989 von Microsoft für Windows 3.0 und OS/2 2.0 entwickelt. Die Technik ermöglichte es, DOS-Anwendungen im

Protected Mode

von 80286- (16-Bit) und 80386-Prozessoren (32-Bit) zu nutzen. Unter DOS war damals bereits das von Phar Lap Software und Quarterdeck Office Systems gemeinsam entwickelte

(VCPI) verbreitet, das eine ähnliche Funktionalität für DOS-Programme bereitstellte, jedoch einen 32-Bit-x86-Prozessor („IA-32“ ab dem 80386) voraussetzte. Ein wesentliches Problem von VCPI war allerdings, dass auch die Programme im privilegierten Ring 0 laufen, weshalb VCPI keinen Speicherschutz bieten kann. Das war unter DOS, wo Programme üblicherweise exklusiv liefen (ohne Multitasking), normalerweise kein Problem, unter den Betriebssystemen OS/2 und Windows jedoch schon. 1989 gab es bereits einige DOS-Programme, die den

Protected Mode

mittels VCPI nutzen. Als Microsoft DPMI vorstellte, gab es daher die Befürchtung, dass dies zu zwei verschiedenen, konkurrierenden und obendrein inkompatiblen Techniken führen könnte. Das wurde durch Microsoft selbst verhindert, denn die Spezifikation von DPMI wurde an ein Komitee abgegeben und von der Industrie gemeinsam weiterentwickelt. Die Weiterentwicklung von VCPI wurde daraufhin eingestellt.[1][2] Die Gründungsmitglieder des

DPMI Committee

waren Borland, IBM, Ergo Computer Solutions, Intelligent Graphics Corporation, Intel, Locus Computing Corporation, Lotus Development Corporation, Microsoft, Phar Lap Software, Phoenix Technologies, Quarterdeck Office Systems und Rational Systems (nun Tenberry Software).[3]

Details

Unter dem in den 1990er Jahren noch weit verbreiteten PC-Betriebssystem DOS wurde die DPMI-Spezifikation in Form von sogenannten DOS-

Extender

umgesetzt. Ein DOS-

Extender

(von englisch to extend, erweitern) schaltet den x86-Prozessor in den

und bietet dabei eine standardisierte Umgebung für 16- und 32-Bit-

Protected-Mode

-Programme, wobei der DOS-

Extender

selbst als Abstraktionsschicht zum im 16-Bit-

laufenden DOS und BIOS dient. Nach Beendigung der Anwendung schaltet der DOS-

Extender

in den

Real Mode

zurück und übergibt die Kontrolle wieder an das Betriebssystem. Besonders DOS-Programme können per DOS-

Extender

die Limitierung von konventionellem Speicher umgehen, ohne die bis dahin im

Real Mode

genutzten aufwändigeren Umwege von z. B.

, XMS oder EMS nutzen zu müssen. Mit DPMI wurde es erstmals möglich, dass auch DOS-Anwendungen die Möglichkeiten des

Protected Mode

von Intel-Prozessoren ab dem 80286 nutzen konnten und zudem Inkompatibilitäten mit anderen

Protected-Mode

-Anwendungen oder -Betriebssystemen – durch die standardisierte Schnittstelle – verhindert wurde. Zudem ermöglicht DPMI (im Gegensatz zu VCPI) Multitasking, da Programme, die als

Clients

unterhalb des DOS-

Extender

s als

DPMI Host

im Ring 0 laufen, sich durch den Speicherschutz des

Protected-Mode

im Ring 3 nicht gegenseitig gefährlich werden können. Unter Windows 3.x wird direkt im Betriebssystem ein

DPMI Host

bereitgestellt. Die DOS-

Extender

erkennen diesen Fall und beschränken sich dann auf das Durchreichen der entsprechenden Aufrufe, wodurch DOS-Programme, die per DPMI im

Protected Mode

laufen, auch unter Windows ausführbar bleiben. Ebenso funktionieren DPMI-DOS-Programme im DOS-Modus unter OS/2.

Implementierungen

Betriebssysteme, die Unterstützung für DOS-Programme beinhalten, sowie grafische Aufsätze für DOS, die im

Protected Mode

laufen, haben DPMI bereits implementiert. Darunter:

DOS-

Extender

, die von vielen für DOS geschriebenen

Protected-Mode

-Programmen genutzt werden:

  • In Borland-Compilern (u. a. Borland Pascal 7.0) eingesetzte RTM.EXE (16-Bit) und RTM32.EXE (32-Bit, nur noch in Turbo C)
  • DOS4GW.EXE (bei Watcom C/C++ mitgeliefert, sehr beliebt bis 1995, danach Entwicklung eingestellt, heute obsolet)
  • PMODE/W
  • Causeway
  • DOS/32A (kompatibel zu DOS4GW.EXE, letzte Version 9.12 von 2006)
  • HX DOS Extender – HDPMI16 (16-Bit) und HDPMI32 (32-Bit)
  • CWSDPMI (Bestandteil von DJGPP, dort auch als GO32 bezeichnet.)
  • PMODE/DJ
  • WDOSX
  • TNT DOS-Extender SDK von Phar Lap
  • 386|DOS-Extender SDK von Phar Lap
  • emx von Eberhard Mattes
  • Zortech C++
  • DPMIONE (setzt DPMI 1.0 um) aus 386MAX von Qualitas, Inc.[4]

Siehe auch

Weblinks

Einzelnachweise

  1. Bob Smith: sudleyplace / DPMIONE. GitHub, abgerufen am 29. Dezember 2021 (englisch).