Введение

Тип компьютерной программы

Расширитель DOS — это компьютерная программа, работающая в среде DOS, которая позволяет запускать программное обеспечение в защищенном режиме, даже если основная операционная система способна работать только в реальном режиме. Расширители DOS были впервые разработаны в 1980-х годах после появления процессора Intel 80286 (и впоследствии усовершенствованы с использованием Intel 80386) для преодоления ограничений памяти DOS.

Операция расширителя DOS

Расширитель DOS — это программа, которая "расширяет" DOS, позволяя программам, работающим в защищенном режиме, прозрачно взаимодействовать с базовым API DOS. Это было необходимо, поскольку многие функции, предоставляемые DOS, требуют 16-битных сегментных и смещенных адресов, указывающих на области памяти в пределах первых 640 килобайт. Однако защищенный режим использует несовместимый метод адресации, где сегментные регистры (теперь называемые селекторами) используются для указания на запись в глобальной таблице дескрипторов, описывающую характеристики сегмента. Эти два метода адресации взаимоисключающие, и процессору приходится выполнять дорогостоящие переключения в реальный (или V86) режим для обработки запросов из незащищенного режима. Помимо настройки среды и загрузки исполняемой программы, расширитель DOS также предоставляет (среди прочего) слой преобразования, поддерживающий буферы, выделенные ниже границы в 1 МБ реального режима памяти. Эти буферы используются для передачи данных между базовой операционной системой в реальном режиме и программой в защищенном режиме. Поскольку переключение между реальным/V86 режимом и защищенным режимом — относительно ресурсоемкая операция, расширитель стремится минимизировать количество переключений, дублируя функциональность многих операций реального режима в своей собственной среде защищенного режима. Поскольку DOS широко использует прерывания для связи между операционной системой и программным обеспечением пользовательского уровня, расширители DOS перехватывают многие распространенные аппаратные (например, часы реального времени и контроллер клавиатуры) и программные (например, сам DOS и API мыши) прерывания. Некоторые расширители также обрабатывают другие общие функции прерываний, такие как подпрограммы видео BIOS. По сути, расширитель DOS подобен миниатюрной операционной системе, обрабатывающей значительную часть функциональности базовой операционной системы.

История развития

Расширитель DOS, возможно, был изобретен компанией Phar Lap, но именно расширитель DOS/4GW 386 от Tenberry Software (ранее Rational Systems) сделал программы DOS в защищенном режиме доступными для широкой аудитории. Входя в состав компиляторов Watcom C, C++ и Fortran для процессоров класса 386, он вскоре стал повсеместно используемым компонентом ПК-приложений и игр, таких как успешная Doom от id Software. Изначально развитие расширителей DOS было обусловлено потребностями ресурсоемких бизнес-приложений, однако именно ПК-игры действительно вывели их на первый план. В результате разработки расширителей DOS были созданы два новых программных интерфейса для решения множества потенциальных конфликтов, возникающих из-за различных методов управления памятью, а также для обеспечения единого интерфейса для клиентских программ. Первым из этих интерфейсов был Виртуальный интерфейс управления программами (VCPI), но он быстро уступил место спецификации DOS Protected Mode Interface (DPMI), которая возникла в процессе разработки Windows 3.0. Эти интерфейсы предоставляли API, через который расширенная программа могла взаимодействовать с программным обеспечением в реальном режиме, выделять память и обрабатывать прерывания. Они также упрощали переход расширителя в защищенный режим и позволяли нескольким программам в защищенном режиме корректно работать одновременно.