stringtranslate.com

Interfaz de modo protegido de DOS

En informática , la interfaz de modo protegido de DOS ( DPMI ) es una especificación introducida en 1989 que permite que un programa DOS se ejecute en modo protegido , dando acceso a muchas funciones de los nuevos procesadores de PC de la época que no estaban disponibles en modo real . Inicialmente fue desarrollado por Microsoft para Windows 3.0 , aunque posteriormente Microsoft entregó el control de la especificación a un comité de la industria con membresía abierta. [1] [2] Casi todos los extensores de DOS modernos se basan en DPMI y permiten que los programas de DOS direccionen toda la memoria disponible en la PC y se ejecuten en modo protegido (principalmente en el anillo 3, con menos privilegios). [3]

Descripción general

DPMI significa Interfaz de modo protegido de DOS. Es una API que permite que un programa se ejecute en modo protegido en procesadores de la serie 80286 y posteriores, y realice las llamadas al modo real sin tener que configurar estos modos de CPU manualmente. DPMI también proporciona funciones para administrar varios recursos, en particular la memoria . Esto permite que los programas habilitados para DPMI funcionen en sistemas operativos multitarea , lo que permite que un núcleo del sistema operativo distribuya dichos recursos entre múltiples aplicaciones. DPMI proporciona sólo la funcionalidad que debe implementarse en modo supervisor . Se puede considerar como un micronúcleo de una sola tarea . El resto de la funcionalidad está disponible para los programas habilitados para DPMI a través de llamadas a servicios DOS y BIOS en modo real , lo que permite que la API DPMI permanezca en su mayor parte independiente de DOS. Las cosas que hacen que DPMI API sea específica de DOS son solo 3 funciones para administrar la memoria de DOS y la letra "D" en el acrónimo "DPMI".

Un servicio DPMI puede ser de 16 bits, 32 bits o "universal" y se denomina kernel DPMI , host DPMI o servidor DPMI . Lo proporciona el sistema operativo host ( host DPMI virtual ) o un extensor de DOS ( host DPMI real ). El kernel DPMI puede ser parte de un extensor de DOS como en DOS/4GW o DOS/32A , o separado, como CWSDPMI o HDPMI .

El uso principal de DPMI API es permitir que los extensores de DOS proporcionen un entorno independiente del sistema operativo del host. El extensor de DOS comprueba la presencia de un kernel DPMI e instala el suyo propio sólo si aún no estaba instalado. Esto permite que los programas extendidos por DOS se ejecuten en un sistema operativo multitarea que proporciona su propio kernel DPMI, o directamente bajo DOS básico , en cuyo caso el extensor de DOS usa su propio kernel DPMI. Los kernels en modo de usuario de Windows 3.x y 9x están construidos con un extensor de DOS, por lo que dependen completamente de una API DPMI proporcionada por el kernel ring-0 de Windows.

Historia

Los primeros borradores de la especificación DPMI fueron publicados en 1989 por Ralph Lipe de Microsoft. [4] [1] Si bien se basa en una versión prototípica de DPMI para Windows 3.0 en modo mejorado 386, varias características de esta implementación se eliminaron de la especificación oficial, incluida una característica denominada Extensiones de MS-DOS [5] o traducción API de DOS que había sido propuesto por Ralph Lipe en los borradores originales. [6] La mayor parte implementaba interfaces DOS y BIOS (debido a este historial, todas las implementaciones de DPMI deben implementar algunas API INT 21h como 4Ch). La versión 0.9 de DPMI fue publicada en 1990 por el recién formado Comité DPMI. Se eligió la versión número 0.9 de la especificación resultante para reflejar la naturaleza simplificada y el estado incompleto del estándar que los miembros del Comité DPMI pudieron acordar. [1] Si bien Windows informa la compatibilidad de la versión 0.9 de DPMI, en realidad también implementa las otras partes, ya que presentan una parte vital del sistema. [5] [1] Esta naturaleza completa no documentada de DPMI se conoce como " verdadera DPMI " en la industria. [7] El estándar DPMI no fue el único esfuerzo para superar las deficiencias de la especificación VCPI . Al mismo tiempo que Microsoft desarrolló DPMI para Windows 3.0, otra alianza industrial que incluía Software Focus Group de Intel , [8] [1] Lotus , [8] Digital Research , Interactive Systems y otros desarrollaron una especificación denominada VCPI extendido ( XVCPI ) para hacer la gestión de memoria y las capacidades multitarea del 386 disponibles para aplicaciones DOS extendidas. [8] [1] [9] Cuando resultó que la propuesta DPMI de Microsoft abordaba una serie de cuestiones similares y contaba con el apoyo de Windows, estos esfuerzos llevaron a la creación del Comité DPMI en febrero de 1990 durante una reunión en Intel en Santa Clara. . [8] [1]

En 1991, el Comité DPMI revisó DPMI a la versión 1.0 para incorporar una serie de aclaraciones y extensiones, pero aún no incluía los bits "verdaderos DPMI" faltantes implementados en Windows. De hecho, el "verdadero DPMI" nunca formó parte de la especificación oficial DPMI, y Windows tampoco implementó las extensiones DPMI 1.0 (y no muchos hosts DPMI lo hicieron).

Si bien DPMI está diseñado para ejecutar software de aplicación DOS extendido en modo protegido y memoria extendida, [10] no es particularmente adecuado para extensiones de sistemas residentes. Otra especificación denominada DPMS , [10] desarrollada por Digital Research / Novel alrededor de 1992, aborda específicamente los requisitos para reubicar fácilmente el software del controlador DOS modificado en la memoria extendida y ejecutarlo en modo protegido, reduciendo así su huella de memoria convencional a pequeños trozos . Esto también es compatible con Helix Cloaking .

El "método" DPMI es específico de DOS y de IBM PC. Otros tipos de computadoras se actualizaron de 16 bits a 32 bits, y el soporte avanzado del programa se proporcionó mediante la actualización del sistema operativo con una nueva API de 32 bits y nuevas capacidades de direccionamiento y administración de memoria. Por ejemplo, el sistema central OS/2 admite programas de 32 bits y se puede ejecutar sin la GUI. La solución DPMI parece ser necesaria principalmente para abordar la necesidad de terceros de lograr que los programas en modo protegido de DOS se ejecuten de manera estable en Windows 3.x antes de que el proveedor dominante de sistemas operativos, Microsoft, pudiera o quisiera abordar el futuro de Windows de 32 bits. Además, Microsoft no vio la respuesta a la transición de 32 bits a un DOS de 32 bits, sino a un Windows de 32 bits con una API completamente diferente (e incompatible).

Compatibilidad

Si bien Windows 3.0 implementa el "verdadero DPMI" [5] e informa soporte para DPMI 0.9, [11] la versión 1.0 de DPMI nunca se implementó en Microsoft Windows , por lo que la mayoría de los programas y extensores de DOS solo se escribieron para la versión 0.9. Sin embargo, pocos extensores implementan el "verdadero DPMI".

Las versiones beta de Qualitas 386MAX implementaron "DPMI verdadero" y podían ejecutar KRNL386.EXE de Windows desde la línea de comando, pero se afirmó que estaba deshabilitado en el producto lanzado en un correo electrónico interno. [5] Sin embargo, DPMIONE (de Bob Smith basado en el código 386MAX) puede hacerlo. Actualmente, DPMIONE y 386 MAX son también los únicos hosts DPMI que soportan completamente DPMI 1.0 (por ejemplo, memoria no comprometida) y son los principales soportes de DPMI 1.0. [12]

El KRNL386.SYS (también conocido como "MultiMAX") de DR DOS "Panther" y "StarTrek" , que ha estado en desarrollo desde 1991, [nb 1] y los administradores de memoria EMM386.EXE de Novell DOS 7 , [10] Caldera OpenDOS y DR-DOS 7.02 y superiores tienen soporte integrado para DPMI cuando se cargan con la /DPMI[=ON]opción. KRNL386.SYS incluso tenía una opción de línea de comando /VER=0.9|1.0para brindar soporte para DPMI 1.0 o 0.9. [13] La traducción de la API de DOS se denominó "llamada interrupción 21 desde el modo protegido". DOS multiusuario , System Manager y REAL/32 también admiten DPMI.

El kernel DPMI separado más famoso es probablemente CWSDPMI ; es compatible con DPMI 0.9, pero no tiene una "traducción API de DOS" no documentada. Otra variante llamada PMODE de "TRAN", también conocido como Thomas Pytel, fue popular entre los programadores de 32 bits durante la escena de demostración de la década de 1990. Muchos juegos usaban DOS/4GW, que fue desarrollado por Rational Systems como un subconjunto de DOS/4G y se distribuyó con el compilador Watcom C.

HDPMI (parte de HX DOS Extender ) proporciona "traducción de API de DOS" y una implementación DPMI 1.0 casi completa.

Comité DPMI

El Comité DPMI 1.0 se reunió entre 1990 y 1991 y estuvo formado por 12 grupos:

Ver también

Notas

  1. ^ KRNL386.SYS de DR DOS "Panther" tiene cadenas de copyright "1991,1992".

Referencias

  1. ^ abcdefg Duncan, Ray (12 de febrero de 1991). "Programación de energía: introducción a la interfaz del modo protegido de DOS". Revista PC . 10 (3). Ziff-Davis Publishing Co .: 367–371. ISSN  0888-8507 . Consultado el 21 de mayo de 2016 . […] Los creadores del VCPI eran muy conscientes de sus limitaciones y ya estaban trabajando arduamente en una especificación de segunda generación llamada VCPI Extendido ( XVCPI ), cuando Microsoft irrumpió en escena con las versiones beta de prueba de Windows 3.0 y su DPMI. . Durante unos meses pareció que el incipiente mercado de extensores de DOS se fragmentaría en dos direcciones mutuamente excluyentes […] Microsoft entregó el control de la especificación DPMI a un comité industrial con membresía abierta, y los partidarios del esfuerzo XVCPI decidieron unir fuerzas detrás el DPMI. […] Microsoft acordó eliminar las partes del DPMI que cruzaron al territorio del extensor de DOS, específicamente, el soporte directo de las interrupciones del BIOS de DOS y ROM en modo protegido . En consecuencia, DPMI, Versión 0.9, la primera versión pública, publicada por el Comité DPMI en mayo de 1990, define sólo las funciones básicas o de bajo nivel […] Naturalmente, el nivel superior o interfaz extensora de DOS de Windows 3.0 todavía existe, pero ha retrocedido a la zona oscura de la funcionalidad no documentada. Indocumentados, pero difícilmente inutilizables […]
  2. ^ Duncan, Ray; Petzold, Carlos ; Schulman, Andrés; Panadero, M. Steven; Nelson, Ross P.; Davis, Stephen R.; Moote, Robert (1992). Ampliación de DOS: una guía del programador para DOS en modo protegido . 2 (2 ed.). Addison-Wesley Publishing Company, Inc. págs. 433–436. ISBN 0-201-56798-9.
  3. ^ Schmit, Michael L. (1995). Herramientas de optimización del procesador Pentium (1 ed.). Cambridge, Massachusetts, EE.UU.: Academic Press, Inc. ( AP Professional ). ISBN 0-12-627230-1.
  4. ^ Microsoft (otoño de 1989), Especificación de interfaz de modo protegido de DOS, revisión preliminar 0.04 (edición preliminar)
  5. ^ abcd Cole, Dave (4 de mayo de 1992). Neiminen, Bruce (ed.). "Re: Extensiones DPMI de MS-DOS" (PDF) (Documento judicial). Microsoft . págs. 123-124. MSC 00779372/00779373, MX3232616/3232617, Cole Anexo 10, 2001-06-21. Archivado (PDF) desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 a través de Comes v. Microsoft - Prueba documental 1306 del demandante. […] [Ralph Lipe:] Creo que están registrados en el proyecto Win386 . En la raíz MSDOS.DOC (mira todos los archivos .DOC en la raíz) […] ¡NO! Este es un asunto extremadamente delicado ya que básicamente les dice a los ISV (también conocidos como DR-DOS e IBM ) cómo ejecutar Windows en modo estándar . Debe aclararlo con BradSi[lverberg] antes de distribuirlo. [Greg Lowney:] SoftNet crea un simulador . Leen en el manual de C7 que puede ejecutar C7 dos-extended si su simulador admite las extensiones de MS-DOS según la especificación DPMI. Entonces […] nos llamaron para obtener una especificación sobre exactamente qué son esas extensiones. Al parecer no están documentados. […] No son tan complicados, principalmente lo que MS-DOS y BIOS llamamos que asignamos para la aplicación, y Qualitas no tuvo problemas para aplicarles ingeniería inversa. (El nuevo 386MAX , en versión beta, podía ejecutar KRNL386 desde la línea de comando, pero creo que desactivaron esa característica en su producto final para evitar pisarnos. 386MAX, por supuesto, es compatible con C7.) […] Ralph ¿Se distribuyó la especificación a los miembros del comité DPMI? […] [Dave Cole:] NO deberíamos documentar esto en absoluto. […]
  6. ^ Microsoft (31 de octubre de 1990). Sokolov, Michael (ed.). "EXTENSIONES DE API DE MS-DOS PARA HOSTS DPMI Versión Prelanzamiento 0.02" (edición preliminar anotada y reescrita) (publicado el 8 de abril de 1999) . Consultado el 23 de mayo de 2016 .
  7. ^ Microsoft (1989). Sokolov, Michael (ed.). "INTERFAZ DE MODO PROTEGIDO DE DOS (DPMI) - ESPECIFICACIÓN API de modo protegido para aplicaciones extendidas de DOS" (edición anotada y reconstruida de forma incompleta) (publicado el 8 de abril de 1999) . Consultado el 23 de mayo de 2016 .
  8. ^ abcd Wurthmann, Geroldo; Wopperer, Bernhard; Wiesböck, Johann (1991). "Die DPMI-Spezifikation – Eine Einführung" [Introducción a la especificación DPMI]. Vorträge und Begleittexte zum 2. Entwicklerforum der Design & Elektronik zum Thema: PC-Architektur, 17 de septiembre de 1991, Múnich [ Presentaciones y material complementario para el segundo foro de desarrolladores sobre arquitectura de PC el 17 de septiembre de 1991, Múnich ] (libro) (en alemán ) (1 ed.). Múnich, Alemania: Markt & Technik Verlag Aktiengesellschaft . pag. 223.(NB. El foro fue organizado por la revista alemana Design & Elektronik e Intel .)
  9. ^ El Comité DPMI (12 de marzo de 1991). Especificación de la interfaz de modo protegido de DOS (DPMI) - Versión 1.0 - Interfaz de programa de aplicación (API) para aplicaciones de DOS en modo protegido (PDF) . 1.0. Intel . págs. 4–5. Código de pedido Intel 240977-001. Archivado desde el original (PDF) el 31 de mayo de 2013 . Consultado el 24 de mayo de 2013 . El prototipo DPMI inicial fue desarrollado por Microsoft para Windows versión 3.0, con aportes de Lotus Corporation y Rational Systems, como parte de un esfuerzo general para mejorar el rendimiento de Windows permitiendo que el kernel de Windows se ejecute en memoria extendida. Paralelamente, Intel estaba trabajando con fabricantes de entornos multitarea, emuladores EMS y extensores de DOS para garantizar que una especificación VCPI extendida pudiera utilizar plenamente las funciones de protección y virtualización del 80386. En febrero de 1990, las partes involucradas en las actividades anteriores acordaron formar el Comité DPMI y formular un estándar para toda la industria para aplicaciones DOS en modo protegido. El Comité publicó la primera Especificación DPMI pública, Versión 0.9, en mayo de 1990.
  10. ^ abc Schneider, Stefanie (17 de junio de 1994). "Das Ende von DOS ist nur noch eine Frage der Zeit" [El fin de DOS es sólo cuestión de tiempo]. Computerwoche (en alemán). Múnich, Alemania: IDG Business Media GmbH . Archivado desde el original el 2022-01-02 . Consultado el 2 de enero de 2022 .
  11. ^ "ARCHIVO: Compatibilidad con Windows Int 21h y NetBIOS para DPMI". Base de conocimientos . Microsoft . 04/08/2004 [04/12/1999]. KB65128. Q65128. Archivado desde el original el 2020-02-20 . Consultado el 21 de mayo de 2016 .
  12. ^ Sokolov, Michael (6 de mayo de 1998). "Una corrección a una publicación anterior". lince-dev . Archivado desde el original el 2020-02-20 . Consultado el 20 de febrero de 2020 .
  13. ^ Schulman, Andrés; Marrón, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. DOS indocumentado: una guía para programadores sobre funciones y estructuras de datos reservadas de MS-DOS, ampliada para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2 ed.). Reading, Massachusetts, Estados Unidos: Addison Wesley . pag. 194.ISBN 0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas: [1][2]

Otras lecturas

enlaces externos