DOS/4GW
DOS/4GW — это 32-битный защищённый режим DOS-расширитель, разработанный компанией Tenberry Software (ранее — Rational Systems) в 1991 году. Он представлял собой программный инструмент, позволяющий запускать 32-разрядные приложения, написанные для процессоров Intel 80386 и выше, в среде операционной системы MS-DOS, которая по умолчанию поддерживала только 16-битный реальный режим. DOS/4GW стал широко распространённым решением для игр и приложений середины 1990-х годов, особенно в сфере разработки на языке C/C++ с использованием компиляторов Watcom C/C++.
История
Предпосылки появления
В начале 1990-х годов MS-DOS оставалась доминирующей операционной системой для персональных компьютеров, однако её архитектура была ограничена 16-битным реальным режимом процессора x86. Это накладывало серьёзные ограничения: максимальный объём доступной оперативной памяти составлял 640 КБ (конвенциональная память), а адресация свыше 1 МБ требовала сложных и неэффективных механизмов (например, EMS или XMS). С появлением процессоров Intel 80386 (1985 год) и их 32-битного защищённого режима возникла потребность в инструментах, позволяющих использовать полный потенциал новых процессоров без необходимости перехода на графические оболочки вроде Windows.
Разработка и выпуск
Компания Rational Systems, основанная в 1985 году, специализировалась на создании DOS-расширителей — программных прослоек, которые переключали процессор в защищённый режим и управляли памятью. Первым продуктом был DOS/16M (1987 год), поддерживавший 16-битный защищённый режим. В 1991 году был выпущен DOS/4GW — 32-битная версия, ориентированная на компилятор Watcom C/C++ версии 9.0. Название «4GW» расшифровывалось как «4 Gigabyte Window» — отсылка к возможности адресации до 4 ГБ виртуальной памяти (хотя на практике приложения обычно использовали не более 64 МБ физической памяти).
Популярность и упадок
DOS/4GW быстро стал стандартом для игр и приложений, разрабатываемых под DOS в первой половине 1990-х годов. Такие известные игры, как Doom (1993), Quake (1996), Duke Nukem 3D (1996) и Blood (1997), использовали DOS/4GW. Расширитель распространялся бесплатно вместе с компилятором Watcom C/C++, что способствовало его массовому внедрению. К концу 1990-х годов, с переходом на Windows 95 и Windows 98, которые предоставляли собственный 32-битный режим и защиту памяти, необходимость в DOS-расширителях отпала. Последняя версия DOS/4GW (2.0) была выпущена в 1995 году.
Принцип работы
Защищённый режим
DOS/4GW переключает процессор из реального режима (16-битный, адресация до 1 МБ) в защищённый режим (32-битный, адресация до 4 ГБ). В защищённом режиме процессор поддерживает:
- Сегментную и страничную организацию памяти — позволяет приложениям обращаться к памяти за пределами 1 МБ без использования устаревших механизмов EMS/XMS.
- Защиту памяти — каждому процессу выделяется изолированное адресное пространство, что предотвращает случайное повреждение данных других процессов или операционной системы.
- Привилегированные уровни (кольца защиты) — DOS/4GW работает на нулевом уровне (Ring 0), что даёт ему полный доступ к аппаратным ресурсам, но также делает систему уязвимой к ошибкам приложения.
Взаимодействие с DOS
DOS/4GW не заменяет DOS, а работает поверх неё. При запуске приложения, скомпилированного с DOS/4GW, расширитель загружается в память, переключает процессор в защищённый режим и передаёт управление коду приложения. Для вызова функций DOS (например, для работы с файлами или ввода-вывода) DOS/4GW использует специальные прерывания (Int 21h), которые обрабатываются через переключение обратно в реальный режим или через виртуальный режим 8086. Это накладывает ограничения: приложения не могут напрямую вызывать прерывания BIOS в защищённом режиме, поэтому DOS/4GW предоставляет эмуляцию некоторых функций.
Управление памятью
DOS/4GW использует страничную организацию памяти (paging) для отображения виртуальных адресов на физические. Он поддерживает:
- Выделение памяти — приложение может запрашивать память блоками (обычно через функции
mallocилиGlobalAlloc), и DOS/4GW распределяет её из пула доступной физической памяти. - Защита от переполнения — расширитель проверяет границы выделенных блоков, что снижает риск ошибок сегментации, но не гарантирует полную безопасность.
- Совместимость с HIMEM.SYS — DOS/4GW может работать совместно с драйвером HIMEM.SYS, который управляет расширенной памятью (XMS), но обычно использует собственные механизмы.
Технические характеристики
Версии
- DOS/4GW 1.0 (1991) — первая версия, поддерживала до 64 МБ физической памяти.
- DOS/4GW 1.1 (1992) — улучшена совместимость с различными драйверами DOS.
- DOS/4GW 2.0 (1995) — последняя версия, поддерживала до 4 ГБ виртуальной памяти, добавлена поддержка DPMI (DOS Protected Mode Interface) версии 0.9.
Совместимость
- Процессоры: Intel 80386, 80486, Pentium и совместимые (AMD, Cyrix).
- Операционные системы: MS-DOS 3.0 и выше, DR-DOS, PC-DOS, FreeDOS.
- Компиляторы: Watcom C/C++ (наиболее тесная интеграция), Borland C++ (с ограничениями), Microsoft C/C++ (требуется дополнительная настройка).
- Ограничения: Не поддерживает многозадачность, не работает в среде Windows 3.x в защищённом режиме (только в реальном режиме DOS).
Производительность
DOS/4GW обеспечивает практически нативный доступ к 32-битным инструкциям процессора, что даёт прирост производительности по сравнению с 16-битными приложениями. Однако переключение между защищённым и реальным режимами для вызовов DOS (например, при чтении файлов) может замедлять работу ввода-вывода. В играх, где основная нагрузка приходится на графику и вычисления (например, Doom), этот эффект минимален.
Применение
Игры
DOS/4GW стал основой для многих игр «золотого века» DOS (1993–1997). Примеры:
- Doom (id Software, 1993) — первая игра, массово использовавшая DOS/4GW для 32-битного рендеринга.
- Quake (id Software, 1996) — использовал DOS/4GW для работы с 3D-графикой.
- Duke Nukem 3D (3D Realms, 1996) — построен на движке Build, который требовал DOS/4GW.
- Blood (Monolith Productions, 1997) — последняя крупная игра на DOS/4GW.
Приложения
Помимо игр, DOS/4GW использовался в научных и инженерных программах, требовавших большого объёма памяти, например:
- AutoCAD (ранние версии для DOS) — для работы с чертежами.
- Mathematica (версия 2.0 для DOS) — для математических расчётов.
- Borland C++ (с опцией DOS/4GW) — для компиляции 32-битных приложений.
Критика и ограничения
Проблемы совместимости
- Аппаратные конфликты: DOS/4GW мог конфликтовать с некоторыми драйверами мыши, звуковых карт или CD-ROM, особенно если они использовали прерывания в реальном режиме.
- Нестабильность: Из-за работы на Ring 0 ошибка в приложении (например, переполнение буфера) могла привести к зависанию всей системы, а не только программы.
- Отсутствие поддержки многозадачности: DOS/4GW не позволял запускать несколько приложений одновременно, что было недостатком по сравнению с Windows.
Устаревание
С выходом Windows 95, которая предоставляла собственный 32-битный режим и защиту памяти, необходимость в DOS-расширителях отпала. Игры, разработанные для Windows, не требовали DOS/4GW, а старые игры могли запускаться через эмуляторы (например, DOSBox). Последняя версия DOS/4GW вышла в 1995 году, и дальнейшая поддержка прекратилась.
Интересные факты
- DOS/4GW был одним из первых DOS-расширителей, поддерживавших DPMI (DOS Protected Mode Interface), что позволяло взаимодействовать с Windows 3.x в реальном режиме.
- В 1994 году компания Rational Systems была переименована в Tenberry Software, но название DOS/4GW осталось неизменным.
- Исходный код DOS/4GW не был опубликован, однако существуют неофициальные реверс-инжиниринговые проекты, такие как DOS/4GW Open Source (незавершённый).
- В игре Doom DOS/4GW использовался для управления памятью, что позволяло обрабатывать большие уровни (до 64 МБ) без фрагментации.
Источники
- Tenberry Software. DOS/4GW User Manual (версия 2.0). 1995.
- Abrash, M. Graphics Programming Black Book. Coriolis Group Books, 1997.
- Carmack, J. Planet Doom: The Story of id Software. 1999.
- FreeDOS Project. DOS/4GW Compatibility Notes. 2003.
- Документация Watcom C/C++ Compiler (версия 9.0–10.6). 1991–1995.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →