DOS Protected Mode Interface
DOS {{#invoke:Vorlage:lang|flat}}, kurz DPMI, ist eine Programmierschnittstelle (API, {{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}) für per DOS-Extender laufende PC-kompatible DOS-Programme. Mit deren Hilfe können Programme für MS-DOS (dem wichtigsten Vertreter von PC-kompatiblem DOS) den {{#invoke:Vorlage:lang|flat}} der x86-Architektur nutzen und umgehen damit die Limitierungen des bis dahin genutzten {{#invoke:Vorlage:lang|flat}}, in dem der sogenannte „konventionelle Speicher“ mit 640 KiB (655.360 Byte, siehe auch {{#invoke:Vorlage:lang|flat}}) limitiert ist. DPMI ist zwar wesentlich komplexer als dessen Vorgänger VCPI, ist jedoch auch in Multitasking-Umgebungen wie Windows oder OS/2 funktionsfähig.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Geschichte
DPMI wurde ursprünglich 1989 von Microsoft für Windows 3.0 und OS/2 2.0 entwickelt. Die Technik ermöglicht es, DOS-Anwendungen im {{#invoke:Vorlage:lang|flat}} 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 {{#invoke:Vorlage:lang|flat}} (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 ist unter DOS, wo Programme üblicherweise exklusiv und ohne Multitasking laufen, normalerweise kein Problem, unter den Betriebssystemen OS/2 und Windows jedoch schon.
1989 gab es bereits einige DOS-Programme, die den {{#invoke:Vorlage:lang|flat}} 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 1990 eingestellt.<ref>{{#invoke:Vorlage:Literatur|f}}</ref><ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Die Gründungsmitglieder des {{#invoke:Vorlage:lang|flat}} 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).<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Details
Unter dem in den 1990er Jahren noch weit verbreiteten PC-Betriebssystem DOS wurde die DPMI-Spezifikation in Form von sogenannten DOS-{{#invoke:Vorlage:lang|flat}} umgesetzt. Ein DOS-{{#invoke:Vorlage:lang|flat}} (von {{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}, erweitern) schaltet den x86-Prozessor in den {{#invoke:Vorlage:lang|flat}} und bietet dabei eine standardisierte Umgebung für 16- und 32-Bit-{{#invoke:Vorlage:lang|flat}}-Programme, wobei der DOS-{{#invoke:Vorlage:lang|flat}} selbst als Abstraktionsschicht zum im 16-Bit-{{#invoke:Vorlage:lang|flat}} laufenden DOS und BIOS dient. Nach Beendigung der Anwendung schaltet der DOS-{{#invoke:Vorlage:lang|flat}} in den {{#invoke:Vorlage:lang|flat}} zurück und übergibt die Kontrolle wieder an das Betriebssystem. Besonders DOS-Programme können per DOS-{{#invoke:Vorlage:lang|flat}} die Limitierung von konventionellem Speicher umgehen, ohne die bis dahin im {{#invoke:Vorlage:lang|flat}} genutzten aufwändigeren Umwege von z. B. {{#invoke:Vorlage:lang|flat}}, XMS oder EMS nutzen zu müssen.
Mit DPMI wurde es erstmals möglich, dass auch DOS-Anwendungen die Möglichkeiten des {{#invoke:Vorlage:lang|flat}} von x86-Prozessoren ab dem 80286 nutzen konnten und zudem Inkompatibilitäten mit anderen {{#invoke:Vorlage:lang|flat}}-Anwendungen oder -Betriebssystemen – durch die standardisierte Schnittstelle – verhindert wurden. Zudem ermöglicht DPMI (im Gegensatz zu VCPI) Multitasking, da sich Programme, die als {{#invoke:Vorlage:lang|flat}} unterhalb des DOS-{{#invoke:Vorlage:lang|flat}}s als {{#invoke:Vorlage:lang|flat}} im Ring 0 laufen, durch den Speicherschutz des {{#invoke:Vorlage:lang|flat}} im Ring 3 nicht gegenseitig gefährlich werden können.
Unter Windows 3.x wird direkt im Betriebssystem ein {{#invoke:Vorlage:lang|flat}} bereitgestellt. Die DOS-{{#invoke:Vorlage:lang|flat}} erkennen diesen Fall und beschränken sich dann auf das Durchreichen der entsprechenden Aufrufe, wodurch DOS-Programme, die per DPMI im {{#invoke:Vorlage:lang|flat}} 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 {{#invoke:Vorlage:lang|flat}} laufen, haben DPMI 1.0 als Host bereits implementiert. Darunter:
- OS/2 ab Version 2.0
- Windows 3.x
- Windows 9x
Speichermanager, die einen vereinfachten DPMI-0.9-Host auch unter reinem DOS implementieren:
Eine vollwertige Implementierung von DPMI 1.0 auch unter DOS ist die Ausnahme:
- DPMIONE (setzt DPMI 1.0 um) aus 386MAX von Qualitas, Inc.<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Bob Smith|Bob Smith: }}{{#if:|{{#if:sudleyplace / DPMIONE|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=sudleyplace / DPMIONE}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://github.com/sudleyplace/DPMIONE%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=sudleyplace / DPMIONE}}}}|[{{#invoke:URLutil|getNormalized|1=https://github.com/sudleyplace/DPMIONE}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=sudleyplace / DPMIONE}}}}]}}{{#if:| ({{{format}}}{{#if:GitHub{{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://github.com/sudleyplace/DPMIONE%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://github.com/sudleyplace/DPMIONE}}%7C%7C}}}}{{#if:sudleyplace / DPMIONE|{{#if:{{#invoke:WLink|isValidLinktext|1=sudleyplace / DPMIONE|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: GitHub| GitHub{{#if: |,|{{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
|{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:GitHub|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:236063||(?)}}}}}}{{#if: 2021-12-29|;}}}}{{#if: 2021-12-29| {{#if:GitHub{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2021-12-29 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2021-12-29|class=Zitationswartung}} }} {{#invoke:DateTime|format|2021-12-29|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:GitHub{{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2021-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://github.com/sudleyplace/DPMIONE | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://github.com/sudleyplace/DPMIONE | {{#if:{{#invoke:URLutil|isWebURL|https://github.com/sudleyplace/DPMIONE}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://github.com/sudleyplace/DPMIONE Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://github.com/sudleyplace/DPMIONE | {{#if:{{#invoke:URLutil|isWebURL|https://github.com/sudleyplace/DPMIONE}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://github.com/sudleyplace/DPMIONE }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://github.com/sudleyplace/DPMIONE | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://github.com/sudleyplace/DPMIONE | {{#if:{{#invoke:URLutil|isWebURL|https://github.com/sudleyplace/DPMIONE}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://github.com/sudleyplace/DPMIONE Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://github.com/sudleyplace/DPMIONE | {{#if:{{#invoke:URLutil|isWebURL|https://github.com/sudleyplace/DPMIONE}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://github.com/sudleyplace/DPMIONE }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>
Kompatible DOS-{{#invoke:Vorlage:lang|flat}}, die von vielen für DOS geschriebenen {{#invoke:Vorlage:lang|flat}}-Programmen genutzt werden, verwenden als DPMI-Client einen bereits vorhandenen DPMI-Host.
Siehe auch
Literatur
Weblinks
- DOS Protected Mode Interface (DPMI) Specification Version 0.9 (englisch)
- DPMI 1.0 Programming API Specification (englisch), bzw. als PDF (231K)
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Programmierschnittstelle