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

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

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

Обзор

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 г. Ральф Липе.[4][1] Хотя он основан на прототипной версии DPMI для Windows 3.0 в 386 расширенном режиме, некоторые функции этой реализации были удалены из официальной спецификации, включая функцию с именем Расширения MS-DOS[5] или же Перевод DOS API это было предложено Ральфом Липе в первоначальных проектах.[6] По большей части он реализовывал интерфейсы DOS и BIOS (из-за этой истории некоторые API-интерфейсы INT 21h, такие как 4Ch, должны быть реализованы во всех реализациях DPMI). Версия 0.9 DPMI была опубликована в 1990 году недавно созданной Комитет DPMI. Номер версии 0.9 полученной спецификации был выбран, чтобы отразить урезанный характер и неполный статус стандарта, с которым могли согласиться члены комитета DPMI.[1] Хотя Windows сообщает о совместимости DPMI версии 0.9, она фактически реализует и другие части, поскольку они представляют собой жизненно важную часть системы. [5][1] Этот недокументированный полный характер DPMI стал известен как "истинный DPMI"в отрасли.[7] Стандарт DPMI был не единственной попыткой преодолеть недостатки спецификации VCPI. В то же время, когда Microsoft разработала DPMI для Windows 3.0, еще один отраслевой альянс, включающий Фокус-группа Intel по программному обеспечению,[8][1] Лотос,[8] Цифровые исследования, Интерактивные системы и другие разработали спецификацию под названием Расширенный VCPI (XVCPI ), чтобы сделать управление памятью и возможности многозадачности 386 доступными для расширенных приложений DOS.[8][1][9]Когда выяснилось, что предложение Microsoft DPMI решает ряд аналогичных проблем и поддерживается Windows, эти усилия привели к созданию комитета DPMI в феврале 1990 года во время встречи в Intel в Санта-Кларе.[8][1]

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

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

«Метод» 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»[5] и сообщает о поддержке DPMI 0.9,[10] DPMI версии 1.0 никогда не реализовывался в Майкрософт Виндоус, поэтому большинство программ и расширителей DOS были написаны только для версии 0.9. Однако немногие расширители реализуют "истинный DPMI".

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

KRNL386.SYS (также известный как "MultiMAX") из ДР ДОС "Пантера" и "Звездный путь", который разрабатывался с 1991 года,[nb 1] и EMM386.EXE менеджеры памяти Novell DOS 7, Кальдера OpenDOS и DR-DOS 7.02 и выше имеют встроенную поддержку DPMI при загрузке с / DPMI [= ВКЛ] вариант. KRNL386.SYS даже имел параметр командной строки /VER=0.9|1.0 для обеспечения поддержки DPMI 1.0 или 0.9.[12] Преобразование DOS API называлось «вызванным прерыванием 21 из защищенного режима». Многопользовательская DOS, Системный менеджер и РЕАЛЬНЫЙ / 32 также поддерживает DPMI.

Самым известным отдельным ядром DPMI, вероятно, является CWSDPMI; он поддерживает DPMI 0.9, но не имеет недокументированного "перевода API DOS". Другой вариант называется PMODE компании "TRAN" aka Томас Пайтел был популярен среди 32-битных программистов во время демонстрационная сцена 1990-х гг. во многих играх использовалась DOS / 4GW, разработанная Рациональные системы как подмножество DOS / 4G и был распространен с Компилятор Watcom C.

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

Комитет DPMI

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

Смотрите также

Примечания

  1. ^ KRNL386.SYS из ДР ДОС "Пантера" имеет авторские строки "1991,1992".

Рекомендации

  1. ^ а б c d е ж грамм Дункан, Рэй (1991-02-12). "Power Programming - Введение в интерфейс защищенного режима DOS". Журнал ПК. Ziff-Davis Publishing Co. 10 (3): 367–371. ISSN  0888-8507. Получено 2016-05-21. […] Создатели VCPI были хорошо осведомлены о его ограничениях и уже усердно работали над спецификацией второго поколения под названием Расширенный VCPI (XVCPI ), когда Microsoft ворвались на сцену с бета-тестовыми версиями Windows 3.0 и его DPMI. В течение нескольких месяцев выяснилось, что молодой Расширитель DOS рынок распался на два взаимоисключающих направления […] Microsoft передала контроль над спецификацией DPMI отраслевому комитету с открытым членством, и сторонники XVCPI решили объединить усилия для создания DPMI. […] Microsoft согласилась удалить части DPMI, которые перешли на территорию расширителей DOS, в частности, прямую поддержку DOS и ROM BIOS прерывает защищенный режим. Следовательно, DPMI, версия 0.9, первая общедоступная версия, выпущенная Комитетом DPMI в мае 1990 года, определяет только низкоуровневые или стандартные функции […] Естественно, более высокий уровень или интерфейс расширителя DOS Windows 3.0 все еще существует, но он отошел в сумеречную зону недокументированной функциональности. Без документов, но вряд ли можно использовать […]
  2. ^ Дункан, Рэй; Петцольд, Чарльз; Шульман, Эндрю; Бейкер, М. Стивен; Нельсон, Росс П .; Дэвис, Стивен Р .; Мут, Роберт (1992). Расширение DOS: Руководство программиста по DOS с защищенным режимом. 2 (2-е изд.). Addison-Wesley Publishing Company, Inc. С. 433–436. ISBN  0-201-56798-9.
  3. ^ Шмит, Майкл Л. (1995). Инструменты оптимизации процессоров Pentium (1-е изд.). Кембридж, Массачусетс, США: Academic Press, Inc. (AP Professional ). ISBN  0-12-627230-1.
  4. ^ Microsoft (Осень 1989 г.), Спецификация интерфейса защищенного режима DOS, предварительная версия версии 0.04 (Пререлизная ред.)
  5. ^ а б c d Коул, Дэйв (1992-05-04). Нейминен, Брюс (ред.). "Re: Расширения MS-DOS DPMI" (PDF) (Судебный документ). Microsoft. С. 123–124. MSC 00779372/00779373, MX3232616 / 3232617, Cole Exhibit 10, 2001-06-21. В архиве (PDF) из оригинала 2018-09-18. Получено 2018-09-17 - через Поставляется против Microsoft - Доказательство истца 1306. […] [Ральф Липе:] Я думаю, они зарегистрированы Win386 проект. В корне MSDOS.DOC (посмотрите все файлы .DOC в корне) […] НЕТ! Это чрезвычайно деликатный вопрос, поскольку он, по сути, сообщает […] Независимые поставщики ПО (AKA DR-DOS и IBM ) как запустить стандартный режим Windows. Вам нужно очистить его с помощью Брэдси [Лверберг] перед распространением. [Грег Лоуни:] SoftNet делает ограничитель. Они читают в C7 manual, что вы можете запустить C7 dos-extended, если ваш ограничитель поддерживает расширения MS-DOS для спецификации DPMI. Итак […] они позвонили нам, чтобы узнать, что именно это за расширения. Судя по всему, они не задокументированы. […] Они не так уж сложны, в основном то, что MS-DOS и BIOS называют, мы отображаем для приложения, и Qualitas у меня не было проблем с их обратным проектированием. (Новый 386MAX в бета-версии могла запускать KRNL386 из командной строки, но я считаю, что они отключили эту функцию в своем конечном продукте, чтобы не наступать нам на ноги. 386MAX, конечно, поддерживает C7.) […] Ральф, была ли спецификация распространена среди членов комитета DPMI? […] [Дэйв Коул:] Мы НЕ должны задокументировать это. […]
  6. ^ Microsoft (1990-10-31). Соколов, Михаил (ред.). "РАСШИРЕНИЯ API MS-DOS ДЛЯ DPMI HOSTS, предварительная версия 0.02" (Аннотированная перепечатанная предварительная редакция) (опубликовано 8 апреля 1999 г.). Получено 2016-05-23.
  7. ^ Microsoft (1989). Соколов, Михаил (ред.). "ИНТЕРФЕЙС ЗАЩИЩЕННОГО РЕЖИМА DOS (DPMI) - СПЕЦИФИКАЦИЯ API защищенного режима для расширенных приложений DOS" (Аннотированная неполностью реконструированная ред.) (Опубликовано 08.04.1999). Получено 2016-05-23.
  8. ^ а б c d Вуртманн, Герольд; Вопперер, Бернхард; Визбёк, Иоганн (1991). «Die DPMI-Spezifikation - Eine Einführung» [Введение в спецификацию DPMI]. Vorträge und Begleittexte zum 2. Entwicklerforum der Design & Elektronik zum Тема: PC-Architektur, 17 сентября 1991 г., Мюнхен [Презентации и дополнительные материалы для второго форума разработчиков по архитектуре ПК 17 сентября 1991 г., Мюнхен.] (книга) (на немецком языке) (1-е изд.). Мюнхен, Германия: Markt & Technik Verlag Aktiengesellschaft. п. 223. (NB. Форум был организован немецким журналом Design & Elektronik и Intel.)
  9. ^ Комитет DPMI (1991-03-12). Спецификация интерфейса защищенного режима DOS (DPMI) - версия 1.0 - интерфейс прикладных программ (API) для приложений DOS защищенного режима (PDF). 1.0. Intel. С. 4–5. Код заказа Intel 240977-001. Архивировано из оригинал (PDF) на 2013-05-31. Получено 2013-05-24. Первоначальный прототип DPMI был разработан Microsoft для Windows версии 3.0 при участии Lotus Corporation и Rational Systems в рамках общих усилий по повышению производительности Windows, позволяя ядру Windows работать в расширенной памяти. Параллельно Intel работала с производителями многозадачных сред, эмуляторов EMS и расширителей DOS, чтобы гарантировать, что расширенная спецификация VCPI сможет полностью использовать функции виртуализации и защиты 80386. В феврале 1990 года стороны, участвовавшие в вышеупомянутой деятельности, договорились сформировать комитет DPMI и сформулировать отраслевой стандарт для приложений DOS защищенного режима. Комитет выпустил первую общедоступную спецификацию DPMI версии 0.9 в мае 1990 года.
  10. ^ «ФАЙЛ: Windows Int 21h и поддержка NetBIOS для DPMI». База знаний. Microsoft. 2004-08-04 [1999-12-04]. KB65128. Q65128. В архиве с оригинала на 2020-02-20. Получено 2016-05-21.
  11. ^ Соколов, Михаил (1998-05-06). «Исправление к предыдущей публикации». lynx-dev. В архиве с оригинала на 2020-02-20. Получено 2020-02-20.
  12. ^ Шульман, Эндрю; Браун, Ральф Д.; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс, США: Эддисон Уэсли. п.194. ISBN  0-201-63287-X. (xviii + 856 + vi стр., 3,5-дюймовая дискета) Исправления: [1][2]

дальнейшее чтение

внешняя ссылка