Расширитель DOS (также ) — программное средство, упрощающее создание программ, которые запускаются из операционных систем семейства DOS и выполняют переключение в защищённый режим процессора, несмотря на то, что операционная система может работать только в реальном режиме. Расширители DOS появились в конце 1980-х, в связи с тем, что для процессора Intel 80286 своевременно не появилось совместимой с DOS операционной системы с поддержкой защищённого режима. В дальнейшем появились расширители DOS и для защищенного режима процессоров Intel 80386 и выше.
Работа в защищённом режиме нужна была в первую очередь для преодоления ограничения адресации в реальном режиме (программа, выполняющаяся в реальном режиме процессора под управлением DOS, может адресовать только 1 Мб), не прибегая к приёмам вроде переключения банков памяти.
32-битные расширители также позволили DOS-программам выполняться в 32-битном режиме, который во многих случаях более эффективен по производительности, чем 16-битный.
Расширители DOS включают инструментальные средства для разработки приложений, часто поставлявшиеся с компиляторами, а также выполнимый код либо в виде отдельного файла (выполнимого или подгружаемого) или группы файлов, либо встраиваемый в файл продукта. Многие компиляторы имели специальные параметры и библиотеки для генерации кода под конкретный расширитель DOS.
Расширитель DOS предоставляет прикладной программе различные сервисы по управлению памятью и прочими ресурсами через программные прерывания.
Всем расширителям DOS приходится вызывать DOS API для доступа к диску, сети и т. д. На Intel 80386 это стало осуществлять легче, поскольку DOS можно оставить выполняться внутри задачи виртуального 8086 режима, к которой может обращаться 16- или 32-битный код. Однако на Intel 80286 вызывать DOS было существенно сложнее, потому что у 286 была только инструкция для переключения из реального в защищённый режим, а обратно не было. Для обхода этого ограничения применялись сброс процессора через контроллер клавиатуры или недокументированная инструкция , или функция BIOS, которая сама использовала один из этих методов.
Изначально расширители DOS сами выполняли переключение в защищённый режим и управляли расширенной памятью. Позднее, когда в практику вошло использование специальных менеджеров защищённой памяти, таких как или на 80386, стало необходимым создать возможность для будущих программ входить и в защищённый режим, был разработан , который предоставлялся этими менеджерами. Однако это плохо состыко́вывалось с многозадачными ОС и не поддерживалось Microsoft, чья альтернатива, интерфейс DPMI, стала более распространённой.
Наибольшего успеха добился расширитель DOS/4G (поставлявшийся с компилятором Watcom как DOS/4GW), не в последнюю очередь благодаря игре Doom, написанной под него.
Свой расширитель DOS присутствует и в Microsoft Windows, начиная с версии 3.0 (кроме реального режима в 3.0).
Среди остальных расширителей можно отметить: Phar Lap 386/DOS-Extender Quarterdeck DESQview и DESQview /X, обеспечивающий многозадачную и многооконную работу обычных программ DOS; 16- и 32-битные расширители DOS фирмы Borland, поставлявшиеся с компиляторами C++ и Паскаля GO32 (используется в GCC и Free Pascal) WDOSX (эмулирует подмножество Win32 и позволяет некоторым консольным программам выполняться под DOS) HX DOS Extender — эмулирует Win32 и позволяет некоторым консольным и OpenGL-программам выполняться CWSDPMI Используется в программах DOS, созданных с помощью DJGPP, является заменой GO32 DOS/32 Advanced DOS Extender — наиболее современный расширитель DOS, свободно используемый и с открытым исходным текстом.
Существует также проект создания операционной системы FreeDOS-32, которая будет напрямую выполнять системные вызовы 32-битных программ.
См. также Реальный режим Защищённый режим DPMI Unreal mode
Примечания
Ссылки DOS/4G and DOS/4GW FAQ
Категория:DOS