DOS extender

Z Wikipedii, wolnej encyklopedii

DOS ekstender – program umożliwiający innym programom działanie w trybie chronionym procesora, nawet kiedy system operacyjny umożliwia działanie wyłącznie w trybie rzeczywistym.

Pierwsze ekstendery powstały w latach osiemdziesiątych dwudziestego wieku w celu uporania się z ograniczeniami pamięciowymi narzucanymi przez MS-DOS i jego pochodne. Były pisane dla procesorów Intel 80286 a potem udoskonalone dla Intel 80386.

Zasada działania[edytuj | edytuj kod]

DOS extender rozszerza DOS tak, żeby programy działające w trybie chronionym mogły bez modyfikacji wywoływać API MS-DOS. Takie rozszerzenie było konieczne, ponieważ wiele funkcji DOSu wymaga szesnastobitowych adresów segmentu i przesunięcia (offset), odnoszących się do pierwszych 640 kilobajtów pamięci. Natomiast tryb chroniony używa niekompatybilnej metody adresowania, w której rejestry segmentu (zwane teraz selektorami) są używane do wybierania elementu z tablicy GDT (Global Descriptor Table), opisującego właściwości segmentu. Te dwie metody adresowania wykluczają się wzajemnie, co powoduje, że procesor musi dokonywać kosztownego przełączania w tryb rzeczywisty (lub wirtualny), żeby obsłużyć żądania dostępu do trybu niechronionego.

Poza konfigurowaniem środowiska i ładowaniem programu docelowego, DOS extender udostępnia między innymi warstwę translacyjną, zawierającą bufory umieszczone poniżej granicy 1 MB trybu rzeczywistego. Bufory te wykorzystywane są do przenoszenia danych między systemem operacyjnym pracującym w trybie rzeczywistym i programem pracującym w trybie chronionym. Ponieważ przełączanie trybów jest dość kosztowne, ekstendery zmniejszają liczbę przełączeń przez powielenie operacji trybu rzeczywistego we własnym środowisku trybu chronionego. Ponieważ DOS intensywnie używa przerwań do komunikacji między systemem i oprogramowaniem użytkowym, ekstendery przechwytują wiele z podstawowych przerwań sprzętowych (np. zegar czasu rzeczywistego czy kontroler klawiatury) i programowych (funkcje DOSu czy API myszki). Niektóre ekstendery obsługują również inne popularne funkcje, takie jak podprogramy wideo BIOSu.

Podsumowując, DOS ekstender to niejako miniaturowy system operacyjny, zastępujący dużą część głównego systemu operacyjnego.

Historia rozwoju[edytuj | edytuj kod]

DOS ekstender został niewątpliwie wynaleziony przez Phar Lap, jednak to napisany dla x386 DOS/4GW producenta Tenberry Software Inc. (dawniej Rational Systems) wprowadził pod strzechy programy DOSowe, pracujące w trybie chronionym. Dołączany do kompilatorów C, C++ i Fortranu producenta Watcom, DOS/4GW szybko stał się główną podporą aplikacji i gier na platformę PC. Jako przykład można podać napisaną przez id Software, niezwykle popularną grę Doom.

O ile początkowo rozwój ekstenderów napędzały pamięciowo nienasycone aplikacje biznesowe, to dopiero gry doprowadziły do rzeczywistej popularności. Dzięki rozwojowi ekstenderów, utworzono dwa nowe interfejsy programowe, mające zlikwidować konflikty wynikające z wykorzystania rozmaitych istniejących wcześniej metod zarządzania pamięcią, jak również dostarczyć jednolity zbiór funkcji dla oprogramowania klientów.

Pierwszy z tych interfejsów był VCPI, jednak szybko został przysłonięty przez specyfikację DPMI, wywodzącą się z procesu tworzenia Windows 3.0. Udostępniały one API, przez które program mógł porozumiewać się z programami trybu rzeczywistego, przydzielać pamięć i obsługiwać przerwania. Zapewniły również ekstenderom łatwy sposób przełączania w tryb chroniony i pozwoliły na jednoczesne działanie wielu programów trybu chronionego.

Lista ekstenderów[edytuj | edytuj kod]

  • DOS/4G, DOS/4GW i DOS/16M producenta Tenberry Software, Inc.
  • 286|DOS Extender i 386|DOS Extender producenta Phar Lap
  • PROT napisany przez Ala Williamsa, 32-bitowy DOS extender opublikowany w Dr. Dobb's Journal. Cechował się tym, że funkcje DOS i BIOS były emulowane przez ekstender, bez przełączania do trybu rzeczywistego.
  • PMODE i PMODE/W Thomasa Pytela i Charlesa Sheffolda. PMODE/W, napisany dla Watcom C jako alternatywę dla DOS/4GW, stał się popularny wśród programistów demosceny.
  • ekstendery OS/286 i OS/386 producenta Ergo (dawniej Eclipse, jeszcze dawniej A.I. Architects), jak również serwery DPM16 i DPM32
  • Microsoft Windows (wersje oparta o DOS) zawierały zarówno serwer DPMI jak i DOS ekstender
  • HX DOS Extender udostępnia ograniczone wsparcie Win32
  • DosWin32 udostępnia ograniczone wsparcie Win32
  • CWSDPMI Charlesa W. Sandmanna, serwer DPMI dla 32-bitowych programów trybu chronionego pisanych dla DJGPP
  • GO32, używany w starszych wersjach DJGPP i przez Free Pascal
  • DBOS producenta Salford Software, 32-bitowy DOS ekstender, używany głównie przez ich kompilator fortrana FTN77
  • DOS/32 napisany przez Narech K, jako alternatywa dla DOS/4GW

Bardziej znane aplikacje DOS wykorzystujące ekstendery[edytuj | edytuj kod]