Interfejs trybu chronionego DOS — DOS Protected Mode Interface
Status | Opublikowany |
---|---|
Rok rozpoczęty | 1989 |
Organizacja | Komitet DPMI |
Domena | Interfejsy programowania aplikacji |
Skrót | DPMI |
W informatyce , DOS Protected Mode Interface ( DPMI ) to specyfikacja wprowadzona w 1989 roku , która pozwala programowi DOS działać w trybie chronionym , dając dostęp do wielu funkcji nowych procesorów PC w tamtych czasach niedostępnych w trybie rzeczywistym . Początkowo został opracowany przez Microsoft dla Windows 3.0 , chociaż później Microsoft przekazał kontrolę nad specyfikacją komitetowi branżowemu z otwartym członkostwem. Prawie wszystkie nowoczesne ekstendery DOS są oparte na DPMI i umożliwiają programom DOS adresowanie całej pamięci dostępnej w komputerze i działanie w trybie chronionym (głównie w pierścieniu 3, najmniej uprzywilejowany).
Przegląd
DPMI umożliwia uruchamianie programu w trybie chronionym na procesorach z serii 80286 i nowszych oraz wykonywanie wywołań z powrotem do systemu operacyjnego działającego w trybie rzeczywistym. Na przykład, program DOS-owy może "włączyć" tryb chroniony, ale nadal może wywołać z powrotem do DOS-a usługę (powiedzmy, przez standardowe przerwanie usługi DOS-u INT 21h). Najważniejszym powodem takiego postępowania jest umożliwienie programom działającym w trybie chronionym działania w systemie DOS, którego jądro używało 16-bitowego trybu rzeczywistego przez całe życie komercyjne. Ponieważ MS-DOS (jako samodzielny system operacyjny) nigdy nie był aktualizowany do wersji 32-bitowej, ani nie włączał adresowania 24- lub 32-bitowego, DPMI służył jako „łatka” umożliwiająca uruchamianie zaawansowanych programów w trybie chronionym na stabilnej platformie MS-DOS . DPMI można traktować jako „tłumacza”, który przyjmuje (na przykład) wywołania systemu DOS w trybie chronionym i tłumaczy rejestry do iz trybu rzeczywistego i chronionego, w tym pobiera 16-bitowe adresy podzielone na segmenty i tłumaczy je na odpowiedni format trybu chronionego.
DPMI pozwala również, przez pewien czas, na uruchamianie programów 32-bitowych w systemie Windows 3.x , ponieważ sam system Windows był 16-bitowy. Ta funkcja pozostaje do dziś w 32-bitowym „pudełku DOS” systemu Windows aż do systemu operacyjnego Windows 10 (tylko wersje 32-bitowe) ze względu na zgodność wsteczną (chociaż nieoficjalnie jest to przestarzałe).
DPMI stanowi jedyną oficjalnie obsługiwaną metodę uruchamiania programów DOS w trybie chronionym w większości zgodnych z DOS wielozadaniowych systemów operacyjnych. Chociaż system Windows od dawna ma natywną obsługę programów 32-bitowych, wiele systemów zgodnych z systemem DOS, które nadal istnieją, musi zazwyczaj korzystać z DPMI w celu świadczenia usług trybu chronionego lub istnieje ryzyko niezgodności. Systemy takie jak FreeDOS wciąż mają swoje miejsce w programowaniu systemów wbudowanych, gdzie ważna jest ich prostota oraz niskie koszty implementacji i zasobów, ze względu na obfitość dokumentacji API i narzędzi kompilacyjnych.
Service DPMI może być 16-bitowy, 32-bitowy lub „uniwersalne” i nazywa się jądro DPMI , gospodarz DPMI , albo serwer DPMI . Jest dostarczany przez system operacyjny hosta ( wirtualny host DPMI ) lub przez ekstender DOS ( rzeczywisty host DPMI ). Jądro DPMI może być częścią ekstendera DOS, takiego jak DOS/4GW lub DOS/32A , lub oddzielnego, jak CWSDPMI lub HDPMI .
Historia
Pierwsze szkice specyfikacji DPMI zostały opublikowane w 1989 roku przez Ralpha Lipe'a z Microsoftu . Chociaż oparta na prototypowej wersji DPMI dla systemu Windows 3.0 w trybie rozszerzonym 386, kilka funkcji tej implementacji zostało usuniętych z oficjalnej specyfikacji, w tym funkcja o nazwie rozszerzenia MS-DOS lub tłumaczenie interfejsu API DOS , które zostały zaproponowane przez Ralpha Lipe w oryginale warcaby. Większość z nich implementowała interfejsy DOS i BIOS (z powodu tej historii niektóre API INT 21h, takie jak 4Ch, muszą być zaimplementowane przez wszystkie implementacje DPMI). DPMI wersja 0.9 została opublikowana w 1990 roku przez nowo utworzony Komitet DPMI . Numer wersji 0.9 wynikowej specyfikacji został wybrany, aby odzwierciedlić uproszczony charakter i niekompletny status standardu, na który mogli się zgodzić członkowie Komitetu DPMI. Chociaż system Windows zgłasza zgodność DPMI w wersji 0.9, w rzeczywistości implementuje również inne części, ponieważ stanowią one istotną część systemu. Ten nieudokumentowany pełny charakter DPMI stał się znany w branży jako „ prawdziwy DPMI ”. Standard DPMI nie był jedyną próbą przezwyciężenia niedociągnięć specyfikacji VCPI. W tym samym czasie, gdy Microsoft opracował DPMI dla Windows 3.0, inny sojusz branżowy, w tym Intel Software Focus Group , Lotus , Digital Research , Interactive Systems i inni, opracowali specyfikację o nazwie Extended VCPI ( XVCPI ), aby zapewnić zarządzanie pamięcią i możliwości wielozadaniowości 386. dostępne dla rozszerzonych aplikacji DOS. Kiedy okazało się, że propozycja DPMI Microsoftu dotyczyła wielu podobnych problemów i była wspierana przez Windows, starania te doprowadziły do utworzenia Komitetu DPMI w lutym 1990 roku podczas spotkania w Intelu w Santa Clara.
W 1991 r. Komitet ds. DPMI zrewidował DPMI do wersji 1.0, aby uwzględnić szereg wyjaśnień i rozszerzeń, ale nadal nie uwzględniał brakujących bitów „prawdziwego DPMI” zaimplementowanych w systemie Windows. W rzeczywistości, "prawdziwe DPMI" nigdy nie stało się częścią oficjalnej specyfikacji DPMI, a Windows również nigdy nie implementował rozszerzeń DPMI 1.0 (i zrobiło to niewiele hostów DPMI).
Chociaż DPMI jest przystosowany do uruchamiania rozszerzonego oprogramowania aplikacji DOS w trybie chronionym i rozszerzonej pamięci, nie jest szczególnie odpowiedni dla rezydentnych rozszerzeń systemu. Inna specyfikacja o nazwie DPMS , opracowana przez Digital Research / Novell około 1992 roku, w szczególności odnosi się do wymagań dotyczących łatwego przenoszenia zmodyfikowanego oprogramowania sterownika DOS do pamięci rozszerzonej i uruchamiania go w trybie chronionym, redukując w ten sposób ich konwencjonalną pamięć do niewielkich fragmentów . Jest to również obsługiwane przez Helix Cloaking .
"Metoda" DPMI jest specyficzna dla DOS i IBM PC. Inne typy komputerów zostały uaktualnione z 16-bitowych do 32-bitowych, a zaawansowaną obsługę programów zapewniono poprzez uaktualnienie systemu operacyjnego o nowy 32-bitowy interfejs API i nowe możliwości zarządzania pamięcią/adresowania. Na przykład rdzeń systemu OS/2 obsługuje programy 32-bitowe i może być uruchamiany bez GUI. Wydaje się, że rozwiązanie DPMI jest głównie potrzebne do zaspokojenia potrzeby osób trzecich, aby programy w trybie chronionym DOS działały stabilnie w systemie Windows 3.x, zanim dominujący dostawca systemu operacyjnego, Microsoft, mógłby lub chciałby zająć się przyszłością 32-bitowego systemu Windows. Ponadto Microsoft nie widział odpowiedzi na 32-bitowe przejście jako 32-bitowy DOS, ale raczej 32-bitowy Windows z zupełnie innym (i niekompatybilnym) API.
Zgodność
Podczas gdy system Windows 3.0 implementuje „prawdziwe DPMI” i obsługuje raporty dla DPMI 0.9, DPMI w wersji 1.0 nigdy nie został zaimplementowany w systemie Microsoft Windows , więc większość programów i rozszerzeń DOS została napisana w większości tylko dla wersji 0.9. Niewiele ekstenderów implementuje jednak „prawdziwe DPMI”.
Wersje beta programu Qualitas 386MAX zaimplementowały „prawdziwe DPMI” i mogły uruchamiać KRNL386.EXE z wiersza poleceń, ale twierdzono, że został on wyłączony w wydanym produkcie w wewnętrznej wiadomości e-mail. Jednak DPMIONE (przez Boba Smitha na podstawie kodu 386MAX) może to zrobić. Obecnie DPMIONE i 386 MAX są również jedynymi hostami DPMI, które w pełni wspierają DPMI 1.0 (np. niezatwierdzoną pamięć) i są głównym wsparciem DPMI 1.0.
KRNL386.SYS (aka „MultiMAX”) DR DOS „Panther” i „StarTrek” , który jest rozwijany od 1991 roku, oraz menedżery pamięci EMM386.EXE w Novell DOS 7 , Caldera OpenDOS i DR-DOS 7.02 i nowszych mają wbudowaną obsługę DPMI po załadowaniu z /DPMI[=ON]
opcją. KRNL386.SYS miał nawet opcję wiersza poleceń, /VER=0.9|1.0
aby zapewnić obsługę DPMI 1.0 lub 0.9. Translacja DOS API była określana jako „nazywane przerwaniem 21 z trybu chronionego”. Multiuser DOS , System Manager i REAL/32 również obsługują DPMI.
Najbardziej znanym oddzielnym jądrem DPMI jest prawdopodobnie CWSDPMI ; obsługuje DPMI 0.9, ale nie ma nieudokumentowanej "tłumaczenia API DOS". Inny wariant nazwany PMODE autorstwa „TRAN”, czyli Thomas Pytel, był popularny wśród 32-bitowych programistów podczas sceny demonstracyjnej w latach 90-tych. Wiele gier używany DOS / 4GW, który został opracowany przez firmę Rational Systems jako podzbiór DOS / 4G i została rozdzielona z kompilatora Watcom C .
HDPMI (część HX DOS Extender ) zapewnia "tłumaczenie DOS API" i prawie kompletną implementację DPMI 1.0.
Komitet DPMI
Komitet DPMI 1.0 spotykał się w latach 1990-1991 i składał się z 12 grup:
- Borland International ( Borland C, Turbo Pascal )
- IBM Corporation ( PC DOS , OS/2 )
- AI Architects / Ergo Computer Solutions / Eclipse Computer Solutions / Ergo Computing ( OS/286 , OS/386 DOS extendery)
- Intelligent Graphics Corporation ( wieloużytkownikowy system DOS VM/386 )
- Intel Corporation ( 286 , 386 , 486 mikroprocesorów)
- Locus Computing Corporation ( Scalanie )
- Lotus Development Corporation ( Lotus 1-2-3 )
- Microsoft Corporation ( MS-DOS , Microsoft Windows )
- Oprogramowanie Phar Lap ( DOS|286 , DOS|386 , TNT )
- Phoenix Technologies ( Phoenix BIOS , Pmate , PForCe , Plink-86 )
- Quarterdeck Office Systems ( QEMM , DESQview , DESQview / X )
- Rational Systems / Oprogramowanie Tenberry ( DOS/16M , DOS/4G , DOS/4GW DOS extendery)
Zobacz też
- Interfejs wirtualnego programu sterującego (VCPI)
- Usługi trybu chronionego DOS (DPMS)
- Maskowanie helisy
- Podsystem we/wy NetWare (NIOS)
- Federacja DOS dla wielu użytkowników
Uwagi
Bibliografia
Dalsza lektura
- Wprowadzenie do interfejsu trybu chronionego DOS – opracowanie techniczne . Intel . 1993. Kod zamówienia Intel 240787-003. (22 strony)
- Specyfikacja interfejsu trybu chronionego DOS (DPMI) — interfejs API trybu chronionego dla rozszerzonych aplikacji DOS — wersja 0.9 . Intel . 1990-07-26. Zarchiwizowane od oryginału 25.04.2012. (112 stron)
- Komitet DPMI (1991-03-12). Specyfikacja interfejsu trybu chronionego DOS (DPMI) — wersja 1.0 — interfejs programowania aplikacji (API) dla aplikacji trybu chronionego DOS (PDF) . Intel . Kod zamówienia Intel 240977-001. Zarchiwizowane z oryginału (PDF) w dniu 31.05.2013 . Pobrano 2013-05-31 . (160 stron)
- Sokołow, Michał (1998-04-26). "Nieco historii na DPMI" . Zarchiwizowane od oryginału dnia 2016-05-22. [3] [4]
- Chui, Paul (1992-02-01). „Nieudokumentowany DOS z systemu Windows 3 w trybie chronionym” . Dziennik dr Dobba . Zarchiwizowane od oryginału w dniu 2018-09-20 . Źródło 2018-09-20 .
- „MS-DOS 5.0 DPMI” (w języku angielskim i japońskim). 2016-07-24 [2016-06-22]. Zarchiwizowane od oryginału w dniu 2018-09-17 . Źródło 2018-09-17 .(MSDPMI na japońskim MS-DOS 5.00A dla platformy PC-98 .)
Zewnętrzne linki
- „Specyfikacja interfejsu trybu chronionego DOS (DPMI) – interfejs API trybu chronionego dla rozszerzonych aplikacji DOS – wersja 0.9” (red. przekonwertowany w formacie HTML). Tenberry Software, Inc. 1998 [1990-07-26]. Zarchiwizowane od oryginału 21.05.2016 . Źródło 19.12.2006 .
- "Specyfikacja API programowania DPMI 1.0" (wersja HTML przekonwertowana). DJ Delorie . Kwiecień 1996 [1991]. Zarchiwizowane od oryginału 21.05.2016 . Źródło 2019-07-28 .
- Sandmann, Charles W. „CWSDPMI” . Zarchiwizowane od oryginału dnia 2015-11-16.
- Jafeta. "Rozszerzenie HX DOS" . Zarchiwizowane od oryginału w dniu 2014-10-13.
- Smith, Bob. "Plik dokumentacji DPMIONE wersja 0.91" . Zarchiwizowane od oryginału w dniu 2016-05-21 . Źródło 2019-07-28 .