Расширитель 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, возможно, был изобретен Фаром Лэпом , но именно расширитель DOS/4GW 386 компании Tenberry Software (ранее Rational Systems) вывел программы DOS защищенного режима на массовый рынок. Включенный в компиляторы Watcom C, C++ и Fortran для процессоров класса 386, он вскоре стал повсеместной основой приложений и игр для ПК, таких как успешный Doom компании id Software .
Хотя изначально именно жадные до памяти бизнес-приложения стали движущей силой развития DOS-расширителей, именно игры для ПК по-настоящему вывели их в центр внимания. В результате разработки DOS-расширителей были созданы два новых программных интерфейса, чтобы позаботиться о многочисленных потенциальных конфликтах, которые могли возникнуть из-за различных методов управления памятью, которые уже существовали, а также предоставить единый интерфейс для клиентских программ.
Первым из этих интерфейсов был Virtual Control Program Interface (VCPI), но он был быстро затмён спецификацией DOS Protected Mode Interface (DPMI), которая выросла из разработки Windows 3.0. [1] Они предоставляли API, через который расширенная программа могла взаимодействовать с программным обеспечением реального режима, выделять память и обрабатывать службы прерываний. Они также предоставляли простой метод для расширителя для настройки переключения в защищённый режим и позволяли нескольким программам защищённого режима мирно сосуществовать.
286|DOS Extender и 386|DOS Extender от Phar Lap . Позднее заменены на TNT Dos Extender.
PROT Эла Уильямса, 32-битный расширитель DOS, опубликованный в журнале доктора Добба [2] [3] и в двух книгах. [4] [5] Этот расширитель обладал преимуществом запуска вызовов DOS и BIOS в эмулированном режиме вместо переключения обратно в реальный режим.
CauseWay был ранее проприетарным расширителем, который конкурировал с DOS4G. С 2000 года он был выпущен как открытый исходный код. Несколько редких игр, таких как Daggerfall, используют его.
HX DOS Extender обеспечивает ограниченную поддержку Win32, позволяя консоли Windows (например, Far Manager ) и некоторым приложениям Win32 GUI работать под DOS. Он содержит как 16-битные, так и 32-битные серверы DPMI (HDPMI16/HDPMI32) для использования с программами DOS защищенного режима [7]
DosWin32 обеспечивает ограниченную поддержку Win32
WDosX был ранней реализацией ограниченной поддержки Win32, использовавшейся компилятором TMT Pascal.
Borland Power Pack представлял собой расширитель, входящий в состав некоторых пакетов разработки и позволяющий получить доступ к ограниченной части API Win32.
TASM , также от Borland, включал 32RTM с DPMI32VM и RTM с DPMI16BI, два хоста DPMI.
CWSDPMI Чарльза В. Сандмана, сервер DPMI для использования с 32-битными программами DOS DJGPP защищенного режима .
D3X — это DPMI-сервер, полностью написанный на ассемблере . Все еще в альфа-состоянии, но разработка прекращена до завершения.
DPMIONE — еще один сервер DPMI. Первоначально разработан для 32-битных программ, созданных Borland C++ и Delphi.
DBOS от Salford Software, 32-битный защищенный режим DOS-расширителя, используемый в основном их компилятором FTN77 Fortran [8]
X32 и X32VM от FlashTek, поддерживаемые в качестве целевых платформ компиляторами Digital Mars
BLINKER от Blink Inc версии 3 и выше предоставлял 286 DOS Extender для нескольких 16-битных компиляторов DOS, включая CA-Clipper, Microsoft C/C++, PASCAL, FORTRAN и Borland C/C++. Поддерживал уникальные исполняемые файлы 'Dual Mode', способные работать как в реальном, так и в защищенном режиме в зависимости от среды выполнения.
ЕМХ
PMODE/W, 32-битный защищенный расширитель DOS для компилятора Watcom C/C++, недавно переведенный в открытый исходный код с июля 2023 года. [9]
Известные расширенные приложения DOS
ATT Graphics Software Labs «RIO» — графическое программное обеспечение Resolution Independent Objects.
Adobe Acrobat Reader 1.0 (использует раннюю версию DOS/4GW professional)
Grand Theft Auto от DMA Design (теперь Rockstar North) . Более поздние версии игры были портированы на Windows, чтобы сделать ее более совместимой с современными компьютерами.
^ Дункан, Рэй; Петцольд, Чарльз ; Шульман, Эндрю; Бейкер, М. Стивен; Нельсон, Росс П.; Дэвис, Стивен Р.; Мут, Роберт (1992). Расширение DOS: Руководство программиста по защищенному режиму DOS (2-е изд.). Addison-Wesley Publishing Company, Inc., стр. 433–462. ISBN 0-201-56798-9.
^ Уильямс, Эл (октябрь 1990 г.). «Создайте свой собственный расширитель DOS: Часть I». Журнал доктора Добба . 15 (10). Технология CMP : 16–18, 20, 24. ISSN 1044-789X.
^ Уильямс, Эл (ноябрь 1990 г.). «Создайте свой собственный расширитель DOS: Часть II». Журнал доктора Добба . 15 (11). Технология CMP : 74, 76, 80, 81–83, 85, 122–128, 130. ISSN 1044-789X.
^ Уильямс, Эл (1991). DOS 5: Руководство разработчика . Редвуд-Сити, Калифорния, США: Markt&Technik . ISBN1-55851-177-6.
^ Уильямс, Эл (1993). DOS 6: Руководство разработчика . Маркт&Техник. ISBN1-55851-309-4.
^ Уильямс, Эл (1993). DOS и защищенный режим Windows: программирование с использованием расширителей DOS на языке C. Addison -Wesley . стр. 30. ISBN0-201-63218-7.
^ "Расширитель HX DOS".
^ Компилятор Фортрана FTN77
^ Чарльз Шеффолд, Томаш Питель. "PMODE/W" . Получено 13 декабря 2023 г.
Внешние ссылки
"DOS Extender на FreeDOS wiki". Архивировано из оригинала 2 марта 2009 г. Получено 12 августа 2009 г.{{cite web}}: CS1 maint: unfit URL (link)