stringtranslate.com

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

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

Обзор

DPMI означает DOS Protected Mode Interface (интерфейс защищенного режима DOS). Это API , который позволяет программе работать в защищенном режиме на процессорах серии 80286 и более поздних, а также выполнять вызовы в реальном режиме без необходимости вручную настраивать эти режимы ЦП. DPMI также предоставляет функции для управления различными ресурсами, в частности памятью . Это позволяет программам с поддержкой DPMI работать в многозадачных ОС, позволяя ядру ОС распределять такие ресурсы между несколькими приложениями. DPMI предоставляет только ту функциональность, которая должна быть реализована в режиме супервизора . Его можно рассматривать как однозадачное микроядро . Остальная функциональность доступна программам с поддержкой DPMI через вызовы служб DOS и BIOS реального режима , что позволяет самому API DPMI оставаться в основном независимым от DOS. То, что делает API DPMI специфичным для DOS, — это всего 3 функции для управления памятью DOS и буква «D» в аббревиатуре «DPMI».

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

Основное применение API DPMI — позволить расширителям DOS предоставлять среду, не зависящую от хостовой ОС. Расширитель DOS проверяет наличие ядра DPMI и устанавливает свое собственное, только если оно еще не установлено. Это позволяет программам с расширением DOS работать либо в многозадачной ОС, которая предоставляет собственное ядро ​​DPMI, либо непосредственно под DOS на голом железе , в этом случае расширитель DOS использует собственное ядро ​​DPMI. Ядра пользовательского режима Windows 3.x и 9x построены с расширителем DOS, поэтому они полностью полагаются на API DPMI, который предоставляется ядром Windows ring-0.

История

Первые черновики спецификации DPMI были опубликованы в 1989 году Ральфом Липе из Microsoft. [4] [1] Хотя эта реализация основывалась на прототипической версии DPMI для Windows 3.0 в 386 расширенном режиме, несколько функций этой реализации были удалены из официальной спецификации, включая функцию под названием MS-DOS Extensions [5] или перевод DOS API , предложенную Ральфом Липе в первоначальных черновиках. [6] Большая ее часть реализовывала интерфейсы DOS и BIOS (из-за этой истории некоторые API INT 21h, такие как 4Ch, должны быть реализованы всеми реализациями DPMI). Версия DPMI 0.9 была опубликована в 1990 году недавно сформированным комитетом DPMI. Номер версии 0.9 итоговой спецификации был выбран, чтобы отразить урезанную природу и незавершенный статус стандарта, с которым смогли согласиться члены комитета DPMI. [1] Хотя Windows сообщает о версии DPMI 0.9 для совместимости, на самом деле она реализует и другие части, поскольку они представляют собой важную часть системы. [5] [1] Эта недокументированная полная природа DPMI стала известна в отрасли как « истинный DPMI ». [7] Стандарт DPMI был не единственной попыткой преодолеть недостатки спецификации VCPI . В то же время, когда Microsoft разрабатывала DPMI для Windows 3.0, другой отраслевой альянс, включая Intel's Software Focus Group , [8] [1] Lotus , [8] Digital Research , Interactive Systems и другие, разработал спецификацию под названием Extended 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 в защищенном режиме и расширенной памяти, [10] он не очень хорошо подходит для резидентных расширений системы. Другая спецификация, называемая DPMS , [10] разработанная 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" [5] и сообщает о поддержке DPMI 0.9, [11] DPMI версии 1.0 никогда не был реализован в Microsoft Windows , поэтому большинство программ и расширителей DOS в основном были написаны только для версии 0.9. Однако немногие расширители реализуют "истинный DPMI".

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

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

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

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

Комитет ДПМИ

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

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

Примечания

  1. ^ KRNL386.SYS из DR DOS "Panther" имеет строки авторских прав "1991,1992".

Ссылки

  1. ^ abcdefg Дункан, Рэй (1991-02-12). «Программирование мощности — введение в интерфейс защищенного режима DOS». PC Magazine . 10 (3). Ziff-Davis Publishing Co. : 367–371. ISSN  0888-8507 . Получено 21.05.2016 . […] Создатели VCPI хорошо знали о его ограничениях и уже усердно работали над спецификацией второго поколения под названием Extended 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. ^ abcd Коул, Дэйв (1992-05-04). Нейминен, Брюс (ред.). "Re: MS-DOS DPMI extensions" (PDF) (Судебный документ). Microsoft . стр. 123–124. MSC 00779372/00779373, MX3232616/3232617, Cole Exhibit 10, 2001-06-21. Архивировано (PDF) из оригинала 2018-09-18 . Получено 2018-09-17 – через Comes v. Microsoft - Piintiff's evidence 1306. […] [Ральф Липе:] Я думаю, они проверены в проекте Win386 . В корне MSDOS.DOC (посмотрите на все файлы .DOC в корне) […] НЕТ! Это чрезвычайно деликатный вопрос, поскольку он в основном сообщает […] ISV (AKA DR-DOS и IBM ), как запускать стандартный режим Windows . Вам нужно очистить его с помощью BradSi[lverberg] перед его распространением. [Грег Лоуни:] SoftNet делает limulator . Они прочитали в руководстве C7 , что вы можете запустить C7 dos-extended, если ваш limulator поддерживает расширения MS-DOS для спецификации DPMI. Поэтому […] они позвонили нам, чтобы получить спецификацию о том, что именно представляют собой эти расширения. По-видимому, они не документированы. […] Они не такие уж сложные, в основном это просто то, какие вызовы MS-DOS и BIOS мы отображаем для приложения, и у Qualitas не возникло проблем с их обратным проектированием. (В бета-версии новый 386MAX мог запускать KRNL386 из командной строки, но я считаю, что они отключили эту функцию в своем конечном продукте, чтобы не наступать нам на ноги. 386MAX, конечно, поддерживает C7.) […] Ральф, была ли спецификация распространена среди членов комитета DPMI? […] [Дэйв Коул:] Мы ни в коем случае НЕ должны это документировать. […]
  6. ^ Microsoft (1990-10-31). Соколов, Майкл (ред.). "MS-DOS API EXTENSIONS FOR DPMI HOSTS Version Pre-Release 0.02" (Аннотированное перепечатанное предварительное издание) (опубликовано 1999-04-08) . Получено 2016-05-23 .
  7. ^ Microsoft (1989). Соколов, Майкл (ред.). "ИНТЕРФЕЙС ЗАЩИЩЕННОГО РЕЖИМА DOS (DPMI) – СПЕЦИФИКАЦИЯ API защищенного режима для расширенных приложений DOS" (Аннотированное не полностью реконструированное издание) (опубликовано 08.04.1999) . Получено 23.05.2016 .
  8. ^ abcd Вюртманн, Герольд; Вопперер, Бернхард; Висбёк, Иоганн (1991). «Die DPMI-Spezifikation – Eine Einführung» [Введение в спецификацию DPMI]. Vorträge und Begleittexte zum 2. Entwicklerforum der Design & Elektronik zum Thema: PC-Architektur, 17 сентября 1991 г., Мюнхен [ Презентации и дополнительные материалы для второго форума разработчиков по архитектуре ПК 17 сентября 1991 г., Мюнхен ] (книга) (на немецком языке) ) (1-е изд.). Мюнхен, Германия: Markt & Technik Verlag Aktiengesellschaft . п. 223.(Примечание. Организаторами форума выступили немецкий журнал 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. ^ abc Шнайдер, Стефани (17 июня 1994 г.). «Das Ende von DOS ist nur noch eine Frage der Zeit» [Конец DOS — лишь вопрос времени]. Computerwoche (на немецком языке). Мюнхен, Германия: IDG Business Media GmbH . Архивировано из оригинала 2 января 2022 г. Проверено 02 января 2022 г.
  11. ^ "ФАЙЛ: Windows Int 21h и поддержка NetBIOS для DPMI". База знаний . Microsoft . 2004-08-04 [1999-12-04]. KB65128. Q65128. Архивировано из оригинала 2020-02-20 . Получено 2016-05-21 .
  12. ^ Соколов, Майкл (1998-05-06). "lA исправление к предыдущей публикации". lynx-dev . Архивировано из оригинала 2020-02-20 . Получено 2020-02-20 .
  13. ^ Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михельс, Рэймонд Дж.; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: руководство программиста по зарезервированным функциям и структурам данных MS-DOS — расширено для включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Reading, Массачусетс, США: Addison Wesley . стр. 194. ISBN 0-201-63287-X.(xviii+856+vi страниц, 3,5-дюймовая дискета) Опечатки: [1][2]

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

Внешние ссылки