DOS extender

A HupWiki-ből...

A DOS extender olyan futtatókörnyezet DOS alá, amely lehetővé teszi, hogy a 16 bites szegmentált üzemmődban működő operációs rendszer alatt is lehessen olyan programot írni, amely kihasználja a 80386 vagy újabb x86 processzorok 32 bites utasításkészletét és lineáris memóriakezelését. Ezt általában a DPMI API egy megvalósításával tették. Ez az API lehetővé tette a 32 bites programoknak, hogy hardverkezelő funkcióikat integrálják a 16 bites rendszerbe, valamint meg tudják hívni annak funkcióit. Pl. egy DOS API funkció hívásának idejére felfüggesztették a 32 bites program futását, visszaváltották a processzort 16 bites üzemmódba, lefuttatták a hívást, végül helyreállították a 32 bites üzemmód korábbi állapotát. Ez a folyamat a hívó program számára láthatatlan maradt.

A DOS extendereket általában egy-egy adott fordítóhoz kapcsolhatjuk, amelyhez elkészültek. A DOS4GW a Watcom C fordító, a CWSDPMI a GNU C DOS-os verziójának beépített extendere volt. De készültek külső extenderek is ezekhez a fordítókhoz, illetve assemblyből használható extenderek, mint pl. a DOS32 vagy a PMODE. A teljesítményigényes DOS-os játékokon kívül az extendereket előszeretettel használták még egy időben a DOS-os demok is.

A helyesen megírt, nem extenderfüggő, csak a DPMI API-t használó programoknak minden további nélkül működniük kell a jelenlegi operációs rendszerekkel, hiszen a DPMI megtalálható a Windowsban és az IBM OS/2-ben is. DOSEMU segítségével pedig akár Linux alatt is futtathatjuk az ilyen módon készült programokat.

Érdekesség, hogy a DPMI-nek volt 16 bites verziója is, amellyel a 80286-os processzor 16 bites védett módját lehetett használni, de ez nem terjedt el, mert túl sok megkötést jelentett és cserébe nem sok előnyt kínált a hagyományos valós módú programozáshoz képest.