Интерфейс защищенного режима DOS

редактировать

Интерфейс защищенного режима DOS
СостояниеОпубликовано
Год начала1989; 31 год назад (1989)
ОрганизацияКомитет DPMI
ДоменИнтерфейсы прикладного программирования
СокращениеDPMI

В вычислениях, интерфейс защищенного режима DOS (DPMI ) - это спецификация, представленная в 1989 году, которая позволяет программе DOS работать в защищенном режиме, предоставляя доступ ко многим функциям новых процессоров ПК того времени, недоступным в реальном режиме. Первоначально он был разработан Microsoft для Windows 3.0, хотя позже Microsoft передала контроль над спецификацией отраслевому комитету с открытым членством. Почти все современные расширители DOS основаны на DPMI и позволяют программам DOS обращаться ко всей памяти, доступной на ПК, и работать в защищенном режиме (в основном в кольце 3, с наименьшими привилегиями).

Содержание
  • 1 Обзор
  • 2 История
    • 2.1 Совместимость
    • 2.2 Комитет DPMI
  • 3 См. Также
  • 4 Примечания
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Обзор

DPMI позволяет программе работать в защищенном режиме на процессорах серии 80286 и более поздних версиях и выполнять обратные вызовы операционной системе, работающей в реальном режиме. Например, программа DOS может «включить» защищенный режим, но по-прежнему выполнять обратные вызовы в DOS для обслуживания (скажем, через стандартное служебное прерывание INT 21h). Самая важная причина для этого - позволить программам защищенного режима работать под DOS, ядро ​​которой использовало 16-битный реальный режим на протяжении всей своей коммерческой жизни. Поскольку MS-DOS (как отдельная операционная система) никогда не обновлялась для 32-разрядной версии и не поддерживала 24- или 32-разрядную адресацию, DPMI служил «патчем», позволяющим программам расширенного защищенного режима работать на стабильной платформе MS-DOS.. DPMI можно рассматривать как «транслятор», который принимает (например) вызовы DOS в защищенном режиме и переводит регистры в реальный и защищенный режим и из него, в том числе принимает 16-битные сегментированные адреса и переводит их в подходящий формат защищенного режима.

DPMI также позволяет в течение некоторого времени запускать 32-битные программы в Windows 3.x, поскольку сама Windows была 16-битной. Эта возможность остается сегодня в 32-битной «коробке DOS» Windows вплоть до операционной системы Windows 10 (только 32-битные версии) по причинам обратной совместимости (хотя неофициально не рекомендуется).

DPMI представляет собой единственный официально поддерживаемый метод для запуска программ DOS в защищенном режиме в большинстве DOS-совместимых многозадачных операционных систем. Хотя Windows уже давно имеет встроенную поддержку 32-разрядных программ, многие системы, совместимые с DOS, которые все еще существуют, обычно должны использовать DPMI для предоставления служб в защищенном режиме или могут оказаться несовместимыми. Такие системы, как FreeDOS, по-прежнему имеют место во встроенном системном программировании, где важны их простота и низкие затраты на реализацию и ресурсы из-за обилия документации API и инструментов компилятора.

Служба DPMI может быть 16-битной, 32-битной или «универсальной» и называется ядром DPMI, хостом DPMI или сервером DPMI. Он предоставляется либо операционной системой хоста (виртуальный хост DPMI), либо расширителем DOS (реальный хост DPMI). Ядро DPMI может быть частью расширителя DOS, например, в DOS / 4GW или DOS / 32A, или отдельным, например, CWSDPMI или HDPMI.

История

Первые проекты спецификации DPMI были опубликованы в 1989 году компанией Microsoft. Хотя он основан на прототипной версии DPMI для Windows 3.0 в 386 расширенном режиме, некоторые функции этой реализации были удалены из официальной спецификации, включая функцию под названием Расширения MS-DOS или Перевод API DOS, который был предложен Ральфом Липе в первоначальных проектах. По большей части он реализовывал интерфейсы DOS и BIOS (из-за этой истории некоторые API-интерфейсы INT 21h, такие как 4Ch, должны быть реализованы всеми реализациями DPMI). Версия 0.9 DPMI была опубликована в 1990 году недавно сформированным Комитетом DPMI. Номер версии 0.9 получившейся спецификации был выбран, чтобы отразить урезанный характер и неполный статус стандарта, с которым могли согласиться члены комитета DPMI. Хотя Windows сообщает о совместимости DPMI версии 0.9, она фактически реализует и другие части, поскольку они представляют собой жизненно важную часть системы. Этот недокументированный полный характер DPMI стал известен в отрасли как «истинный DPMI ». Стандарт DPMI был не единственной попыткой преодолеть недостатки спецификации VCPI. В то же время Microsoft разработала DPMI для Windows 3.0, еще один отраслевой альянс, включающий Intel Software Focus Group, Lotus, Digital Research, Interactive Systems и другие разработали спецификацию под названием Extended VCPI (XVCPI ), чтобы сделать управление памятью и возможности многозадачности 386 доступными для расширенных приложений DOS. Когда выяснилось, что предложение Microsoft по DPMI решает ряд аналогичных проблем и поддерживается Windows, эти усилия привели к созданию комитета DPMI в феврале 1990 года во время встречи в Intel в Санта-Кларе.

В 1991 году Комитет DPMI пересмотрел DPMI до версии 1.0, чтобы включить в него ряд уточнений и расширений, но он по-прежнему не включал недостающие биты «истинного DPMI», реализованные в Windows. Фактически, «настоящий DPMI» никогда не становился частью официальной спецификации DPMI, и Windows также никогда не реализовывала расширения DPMI 1.0 (и не многие хосты DPMI сделали).

Хотя DPMI предназначен для запуска расширенного прикладного программного обеспечения DOS в защищенном режиме и с расширенной памятью, он не особенно хорошо подходит для резидентных системных расширений. Другая спецификация под названием DPMS, разработанная Digital Research / Novell примерно в 1992 году, конкретно касается требований по легкому перемещению модифицированного программного обеспечения драйвера DOS в расширенную память и запуску их в защищенной режим, тем самым сокращая объем обычной памяти до небольших заглушек. Это также поддерживается Helix Cloaking.

"Метод" DPMI специфичен для DOS и IBM PC. Компьютеры других типов были модернизированы с 16-разрядных до 32-разрядных, а расширенная программная поддержка была обеспечена путем обновления операционной системы с помощью нового 32-разрядного «API» и новых возможностей управления памятью / адресации. Например, основная система OS / 2 поддерживает 32-битные программы и может работать без графического интерфейса. Решение DPMI, по-видимому, в основном необходимо для удовлетворения потребности третьих лиц в обеспечении стабильной работы программ защищенного режима DOS в Windows 3.x до того, как доминирующий поставщик операционной системы, Microsoft, сможет или решит заняться будущим 32-разрядной Windows. Вдобавок Microsoft не видела ответ на 32-битный переход в виде 32-битной DOS, а скорее в 32-битной Windows с совершенно другим (и несовместимым) API.

Совместимость

Хотя Windows 3.0 реализует «истинный DPMI» и сообщает о поддержке DPMI 0.9, DPMI версии 1.0 никогда не реализовывался в Microsoft Windows, поэтому большинство программ и расширителей DOS в основном были написаны только для версии 0.9. Однако немногие расширители реализуют "истинный DPMI".

Бета-версии 386MAX реализовали «истинный DPMI» и могли запускать Windows KRNL386.EXE из командной строки, но было заявлено, что это было отключено в выпущенном продукте во внутреннем сообщении электронной почты. Однако DPMIONE (Боб Смит на основе кода 386MAX) может это сделать. В настоящее время и 386 также является единственным хостом DPMI, который полностью поддерживает DPMI 1.0 (например, незафиксированная память), и они являются основным поставщиком DPMI 1.0.

KRNL386.SYS (также известный как «MultiMAX») DR DOS "Panther" и "StarTrek", который находился в разработке с 1991 года, и менеджеров памяти EMM386.EXE Novell DOS 7, Caldera OpenDOS и DR-DOS 7.02 и выше имеют встроенную поддержку DPMI при загрузке с опцией / DPMI [= ON]. KRNL386.SYS даже имел параметр командной строки /VER=0.9|1.0для обеспечения поддержки DPMI 1.0 или 0.9. Преобразование DOS API называлось «вызванным прерыванием 21 из защищенного режима». Многопользовательская DOS, System Manager и REAL / 32 также поддерживают DPMI.

Наиболее известным отдельным ядром DPMI, вероятно, является CWSDPMI ; он поддерживает DPMI 0.9, но не поддерживает недокументированный "перевод API DOS". Другой вариант, названный PMODE компанией «TRAN», он же был популярен среди 32-битных программистов во время демонстрационной сцены 1990-х годов. Многие игры использовали DOS / 4GW, который был разработан Rational Systems как подмножество DOS / 4G и распространялся с компилятором Watcom C.

HDPMI (часть HX DOS Extender ) обеспечивает «перевод API DOS» и почти полную реализацию DPMI 1.0.

Комитет DPMI

Комитет DPMI 1.0 встречался в период с 1990 по 1991 год и состоял из 12 групп:

См. Также
Примечания
Ссылки
Дополнительная литература
Внешние ссылки
Последняя правка сделана 2021-05-16 09:22:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте