DOS Protected Mode Interface - DOS Protected Mode Interface

DOS Protected Mode Interface
Status Publisert
Året startet 1989 ; 32 år siden ( 1989 )
Organisasjon DPMI -komiteen
Domene Programmeringsgrensesnitt for applikasjoner
Forkortelse DPMI

I databehandling er DOS Protected Mode Interface ( DPMI ) en spesifikasjon som ble introdusert i 1989 som lar et DOS -program kjøre i beskyttet modus , noe som gir tilgang til mange funksjoner i de nye PC -prosessorene på den tiden som ikke var tilgjengelig i ekte modus . Den ble opprinnelig utviklet av Microsoft for Windows 3.0 , selv om Microsoft senere overga kontrollen over spesifikasjonen til en bransjekomité med åpent medlemskap. Nesten alle moderne DOS -forlengere er basert på DPMI og lar DOS -programmer adressere alt tilgjengelig minne på PC -en og kjøre i beskyttet modus (for det meste i ring 3, minst privilegerte).

Oversikt

DPMI lar et program kjøre i beskyttet modus på 80286 -serien og senere prosessorer og ringe tilbake til operativsystemet som kjører i ekte modus. For eksempel kan et DOS -program "slå på" beskyttet modus, men fortsatt ringe tilbake til DOS for service (si via INT 21h standard DOS -tjenesteavbrudd). Den viktigste grunnen til å gjøre dette er å la programmer i beskyttet modus fungere under DOS, hvis kjerne brukte 16-biters ekte modus gjennom hele sitt kommersielle liv. Fordi MS-DOS (som et frittstående operativsystem) aldri ble oppdatert for 32 bits, eller aktivert 24- eller 32-biters adressering, tjente DPMI som en "patch" for å tillate avanserte beskyttede modusprogrammer å kjøre på den stabile MS-DOS-plattformen . DPMI kan betraktes som en "oversetter" som tar (for eksempel) DOS-anrop i beskyttet modus og oversetter registre til og fra ekte og beskyttet modus, inkludert å ta 16-biters segmenterte adresser og oversette dem til et passende beskyttet modusformat.

DPMI tillater også, for en stund, 32-biters programmer å kjøre under Windows 3.x , siden Windows selv var 16-bit. Denne muligheten forblir i dag i en 32-biters Windows "DOS-boks" helt til Windows 10- operativsystemet (bare 32-biters utgaver) av bakoverkompatibilitetshensyn (selv om det er uoffisielt avviklet).

DPMI utgjør den eneste offisielt støttede metoden for å kjøre DOS-programmer i beskyttet modus i de fleste DOS-kompatible multitasking-operativsystemene. Selv om Windows lenge har innebygd støtte for 32-biters programmer, må de mange DOS-kompatible systemene som fortsatt eksisterer vanligvis bruke DPMI for å tilby tjenester i beskyttet modus eller risikere å være inkompatible. Systemer som FreeDOS har fortsatt en plass i innebygde systemprogrammeringer, der enkelhet og lave implementering og ressurskostnader, på grunn av overflod av API -dokumentasjon og kompilatorverktøy, er viktige.

En DPMI-tjeneste kan være 16-biters, 32-biters eller "universell" og kalles DPMI-kjernen , DPMI-verten eller DPMI-serveren . Det leveres enten av vertsoperativsystemet ( virtuell DPMI -vert ) eller av en DOS -utvider ( ekte DPMI -vert ). DPMI -kjernen kan være en del av en DOS -forlenger, for eksempel i DOS/4GW eller DOS/32A , eller separat, som CWSDPMI eller HDPMI .

Historie

De første DPMI -spesifikasjonsutkastene ble utgitt i 1989 av Microsofts Ralph Lipe . Mens den var basert på en prototypisk versjon av DPMI for Windows 3.0 i 386 forbedret modus, ble flere funksjoner i denne implementeringen fjernet fra den offisielle spesifikasjonen, inkludert en funksjon som heter MS-DOS Extensions eller DOS API-oversettelse som hadde blitt foreslått av Ralph Lipe i originalen utkast. Det meste var implementering av DOS- og BIOS -grensesnitt (på grunn av denne historien må noen INT 21h APIer som 4Ch implementeres av alle DPMI -implementeringer). DPMI versjon 0.9 ble utgitt i 1990 av den nyopprettede DPMI -komiteen . Versjonsnummer 0.9 av den resulterende spesifikasjonen ble valgt for å gjenspeile den avskårne naturen og ufullstendige statusen til standarden medlemmene i DPMI-komiteen kunne bli enige om. Mens Windows rapporterer DPMI versjon 0.9 for kompatibilitet, implementerer den faktisk også de andre delene, siden de presenterer en viktig del av systemet. Denne udokumenterte fulle naturen til DPMI har blitt kjent som " sann DPMI " i bransjen. DPMI -standarden var ikke den eneste innsatsen for å overvinne manglene i VCPI -spesifikasjonen. På samme tid som Microsoft utviklet DPMI for Windows 3.0, utviklet en annen bransjeallianse inkludert Intels Software Focus Group , Lotus , Digital Research , Interactive Systems og andre en spesifikasjon ved navn Extended VCPI ( XVCPI ) for å lage minnestyring og multitasking -evner til 386 tilgjengelig for utvidede DOS -applikasjoner. Da det viste seg at Microsofts DPMI -forslag behandlet en rekke lignende problemer og ble støttet av Windows, førte denne innsatsen til opprettelsen av DPMI -komiteen i februar 1990 under et møte på Intel i Santa Clara.

I 1991 reviderte DPMI -komiteen DPMI til versjon 1.0 for å inkorporere en rekke presiseringer og utvidelser, men den inkluderte fortsatt ikke de manglende "sanne DPMI" -bitene som er implementert i Windows. Faktisk ble "true DPMI" aldri en del av den offisielle DPMI -spesifikasjonen, og Windows implementerte på samme måte aldri DPMI 1.0 -utvidelsene (og ikke mange DPMI -verter gjorde det).

Mens DPMI er skreddersydd for å kjøre utvidet DOS -applikasjonsprogramvare i beskyttet modus og utvidet minne, er det ikke spesielt godt egnet for systemutvidelser for innbyggere. En annen spesifikasjon ved navn DPMS , utviklet av Digital Research / Novell rundt 1992, adresserer spesielt kravene for enkelt å flytte modifisert DOS -driverprogramvare til utvidet minne og kjøre dem i beskyttet modus, og dermed redusere det konvensjonelle minnefotavtrykket ned til små stubber . Dette støttes også av Helix Cloaking .

DPMI "metoden" er spesifikk for DOS og IBM PC. Andre datatyper ble oppgradert fra 16-bit til 32-bit, og den avanserte programstøtten ble gitt ved å oppgradere operativsystemet med et nytt 32-biters API og nye funksjoner for minnestyring/adressering. For eksempel støtter OS/2- kjernesystemet 32-biters programmer, og kan kjøres uten GUI. DPMI-løsningen ser ut til å være hovedsakelig nødvendig for å møte tredjeparts behov for å få DOS-beskyttede modusprogrammer som kjører stabilt på Windows 3.x før den dominerende operativsystemleverandøren, Microsoft, kunne eller ville løse fremtiden for 32-biters Windows. I tillegg så Microsoft ikke svaret på 32-biters overgang som en 32-biters DOS, men heller en 32-biters Windows med et helt annet (og inkompatibelt) API.

Kompatibilitet

Mens Windows 3.0 implementerer "true DPMI" og rapporterer støtte for DPMI 0.9, ble DPMI versjon 1.0 aldri implementert i Microsoft Windows , så de fleste programmer og DOS -utvidere ble stort sett bare skrevet for versjon 0.9. Få forlengere implementerer imidlertid "true DPMI".

Beta -versjoner av Qualitas 386MAX implementerte "true DPMI" og kunne kjøre Windows 'KRNL386.EXE fra kommandolinjen, men det ble hevdet at det var deaktivert i det utgitte produktet i en intern e -post. DPMIONE (av Bob Smith basert på 386MAX -koden) kan imidlertid gjøre det. For tiden er DPMIONE og 386 MAX også den eneste DPMI -verten som støtter DPMI 1.0 fullstendig (f.eks. Uforpliktet minne), og de er den viktigste støttespilleren for DPMI 1.0.

KRNL386.SYS (alias "MultiMAX") til DR DOS "Panther" og "StarTrek" , som har vært under utvikling siden 1991, og EMM386.EXE- minneledere for Novell DOS 7 , Caldera OpenDOS og DR-DOS 7.02 og høyere har innebygd støtte for DPMI når den er lastet med /DPMI[=ON]alternativet. KRNL386.SYS hadde til og med et kommandolinjealternativ for /VER=0.9|1.0å gi støtte for enten DPMI 1.0 eller 0.9. DOS API -oversettelse ble referert til som "kalt interrupt 21 fra beskyttet modus". Multiuser DOS , System Manager og REAL/32 støtter også DPMI.

Den mest kjente separate DPMI -kjernen er sannsynligvis CWSDPMI ; den støtter DPMI 0.9, men ingen udokumentert "DOS API -oversettelse". En annen variant kalt PMODE av "TRAN" alias Thomas Pytel var populær blant 32-biters programmerere under demoscenen på 1990-tallet. Mange spill brukte DOS/4GW, som ble utviklet av Rational Systems som en delmengde av DOS/4G og ble distribuert med Watcom C -kompilatoren .

HDPMI (del av HX DOS Extender ) gir "DOS API -oversettelse" og nesten fullstendig implementering av DPMI 1.0.

DPMI -komiteen

DPMI 1.0 -komiteen møttes mellom 1990 til 1991 og besto av 12 grupper:

Se også

Merknader

Referanser

Videre lesning

Eksterne linker