En informática , la interfaz de modo protegido de DOS ( DPMI ) es una especificación introducida en 1989 que permite que un programa de 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 Microsoft luego 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 se dirijan a toda la memoria disponible en la PC y se ejecuten en modo protegido (principalmente enanillo 3, menos privilegiado). [3]
Estado | Publicado |
---|---|
Año iniciado | 1989 |
Organización | Comité DPMI |
Dominio | Interfaces de programación de aplicaciones |
Abreviatura | DPMI |
Descripción general
DPMI permite que un programa se ejecute en modo protegido en procesadores de la serie 80286 y posteriores y realice llamadas al sistema operativo que se ejecuta en modo real. Por ejemplo, un programa de DOS puede "activar" el modo protegido, pero aún así hacer llamadas de regreso a DOS para el servicio (digamos, a través de la interrupción de servicio de DOS estándar INT 21h). La razón más importante para hacer esto es permitir que los programas en modo protegido funcionen bajo DOS, cuyo núcleo utilizó el modo real de 16 bits durante toda su vida comercial. Debido a que MS-DOS (como sistema operativo independiente) nunca se actualizó para 32 bits, ni se habilitó el direccionamiento de 24 o 32 bits, DPMI sirvió como un "parche" para permitir que los programas avanzados en modo protegido se ejecutaran en la plataforma estable de MS-DOS. . Se puede pensar en DPMI como un "traductor" que toma (por ejemplo) llamadas DOS en modo protegido y traduce los registros desde y hacia el modo real y protegido, incluida la toma de direcciones segmentadas de 16 bits y su traducción a un formato de modo protegido adecuado.
DPMI también permite, durante algún tiempo, que los programas de 32 bits se ejecuten en Windows 3.x , ya que el propio Windows era de 16 bits. Esta capacidad permanece hoy en una "caja DOS" de Windows de 32 bits hasta el sistema operativo Windows 10 (solo ediciones de 32 bits) por razones de compatibilidad con versiones anteriores (aunque desaprobado oficialmente [ cita requerida ] ).
DPMI constituye el único método oficialmente admitido para ejecutar programas DOS en modo protegido en la mayoría de los sistemas operativos multitarea compatibles con DOS. Si bien Windows ha tenido durante mucho tiempo soporte nativo para programas de 32 bits, los muchos sistemas compatibles con DOS que todavía existen deben usar DPMI para proporcionar servicios en modo protegido o corren el riesgo de ser incompatibles. Los sistemas como FreeDOS todavía tienen un lugar en la programación de sistemas embebidos, donde su simplicidad y su bajo costo de implementación y recursos, debido a la abundancia de documentación API y herramientas de compilación, son importantes.
Un servicio puede ser DPMI de 16 bits, 32 bits, o "universal" y que se llama el núcleo DPMI , anfitrión DPMI o servidor DPMI . Lo proporciona el sistema operativo del 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 .
Historia
Los primeros borradores de especificaciones de DPMI fueron publicados en 1989 por Ralph Lipe de Microsoft . [4] [1] Aunque se basa en una versión prototípica de DPMI para Windows 3.0 en modo 386 mejorado, varias características de esta implementación se eliminaron de la especificación oficial, incluida una característica llamada Extensiones de MS-DOS [5] o traducción de API de DOS que había sido propuesto por Ralph Lipe en los borradores originales. [6] La mayor parte estaba implementando interfaces DOS y BIOS (debido a este historial, algunas API INT 21h como 4Ch tienen que ser implementadas por todas las implementaciones de DPMI). La versión 0.9 de DPMI fue publicada en 1990 por el Comité DPMI recién formado . La versión número 0.9 de la especificación resultante se eligió para reflejar la naturaleza simplificada y el estado incompleto de la norma que los miembros del Comité DPMI pudieron acordar. [1] Si bien Windows reporta la versión 0.9 de DPMI para compatibilidad, en realidad también implementa las otras partes, ya que representan una parte vital del sistema. [5] [1] Esta plena naturaleza indocumentada 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 incluye Software Focus Group de Intel , [8] [1] Lotus , [8] Digital Research , Interactive Systems y otros desarrollaron una especificación llamada Extended VCPI ( XVCPI ) para hacer la gestión de memoria y las capacidades multitarea del 386 disponible para aplicaciones DOS extendidas. [8] [1] [9] Cuando resultó que la propuesta DPMI de Microsoft abordó una serie de problemas similares y fue apoyada por 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 todavía no incluía los bits faltantes de "DPMI verdadero" implementados en Windows. De hecho, el "verdadero DPMI" nunca se convirtió en parte de la especificación oficial de DPMI, y Windows tampoco implementó las extensiones de DPMI 1.0 (y no muchos hosts de DPMI lo hicieron).
Si bien DPMI está diseñado para ejecutar software de aplicación DOS extendido en modo protegido y memoria extendida, no es particularmente adecuado para extensiones de sistema residentes. Otra especificación denominada DPMS , desarrollada por Digital Research / Novell alrededor de 1992, aborda específicamente los requisitos para reubicar fácilmente el software del controlador DOS modificado en la memoria extendida y ejecutarlos en modo protegido, reduciendo así su huella de memoria convencional a pequeños stubs . Esto también es compatible con Helix Cloaking .
El "método" de DPMI es específico de DOS e 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 administración / direccionamiento 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 DOS se ejecuten de manera estable en Windows 3.x antes de que el proveedor de sistemas operativos dominante, 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 como un DOS de 32 bits, sino más bien como un Windows de 32 bits con una API completamente diferente (e incompatible).
Compatibilidad
Mientras que Windows 3.0 implementa "verdadero DPMI" [5] e informa soporte para DPMI 0.9, [10] DPMI versión 1.0 nunca se implementó en Microsoft Windows , por lo que la mayoría de los programas y extensores de DOS se escribieron principalmente para la versión 0.9. Sin embargo, pocos extensores implementan un "verdadero DPMI".
Las versiones beta de Qualitas 386MAX implementaron "verdadero DPMI" y podían ejecutar KRNL386.EXE de Windows desde la línea de comandos, 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 el único host DPMI que admite DPMI 1.0 completamente (por ejemplo, memoria no comprometida) y son el principal soporte de DPMI 1.0. [11]
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 , Caldera OpenDOS y DR- DOS 7.02 y superior tienen soporte integrado para DPMI cuando se carga con la /DPMI[=ON]
opción. KRNL386.SYS incluso tenía una opción de línea de comando /VER=0.9|1.0
para brindar soporte para DPMI 1.0 o 0.9. [12] La traducción de la API de DOS se denominó "interrupción 21 del modo protegido". El DOS multiusuario , System Manager y REAL / 32 también admiten DPMI.
El núcleo DPMI independiente más famoso es probablemente CWSDPMI ; es compatible con DPMI 0.9, pero sin "traducción de API de DOS" indocumentada. Otra variante llamada PMODE por "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 utilizan DOS / 4 GW, 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 de DPMI 1.0 casi completa.
Comité DPMI
El Comité DPMI 1.0 se reunió entre 1990 y 1991 y estuvo integrado por 12 grupos:
- Borland Internacional ( Borland C, Turbo Pascal )
- IBM Corporation ( PC DOS , OS / 2 )
- AI Architects / Ergo Computer Solutions / Eclipse Computer Solutions / Ergo Computing ( Extensores DOS OS / 286 , OS / 386 )
- Intelligent Graphics Corporation ( DOS VM / 386 multiusuario)
- Intel Corporation ( 286 , 386 , 486 microprocesadores)
- Locus Computing Corporation ( fusión )
- Corporación de desarrollo de Lotus ( Lotus 1-2-3 )
- Microsoft Corporation ( MS-DOS , Microsoft Windows )
- Software Phar Lap ( DOS | 286 , DOS | 386 , TNT )
- Phoenix Technologies ( Phoenix BIOS , PMate , PForCe , Plink-86 )
- Sistemas de oficina Quarterdeck ( QEMM , DESQview , DESQview / X )
- Software Rational Systems / Tenberry ( Extensores DOS / 16M , DOS / 4G , DOS / 4GW DOS)
Ver también
- Interfaz de programa de control virtual (VCPI)
- Servicios de modo protegido de DOS (DPMS)
- Encubrimiento de hélice
- Subsistema de E / S NetWare (NIOS)
- Federación DOS multiusuario
Notas
- ^ KRNL386.SYS de DR DOS "Panther" tiene cadenas de copyright "1991,1992".
Referencias
- ↑ a b c d e f g Duncan, Ray (12 de febrero de 1991). "Programación de energía: una introducción a la interfaz de modo protegido de DOS" . Revista de PC . Ziff-Davis Publishing Co. 10 (3): 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 Extended VCPI ( XVCPI ), cuando Microsoft irrumpió en escena con las versiones de prueba beta 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é de la industria con membresía abierta, y los patrocinadores del esfuerzo XVCPI decidieron unir fuerzas para respaldar el DPMI. […] Microsoft acordó eliminar las partes de la DPMI que cruzaron al territorio del extensor de DOS, específicamente, el soporte directo de las interrupciones BIOS de DOS y ROM en modo protegido . En consecuencia, DPMI, Versión 0.9, la primera versión pública, lanzada por el Comité DPMI en mayo de 1990, define solo las funciones de bajo nivel o de bloque de construcción […] Naturalmente, el nivel superior o la interfaz de extensión DOS de Windows 3.0 todavía existe, pero ha retrocedido a la zona de penumbra de la funcionalidad indocumentada. Indocumentado, pero difícilmente inutilizable […]
- ^ Duncan, Ray; Petzold, Charles ; Schulman, Andrew; Baker, M. Steven; Nelson, Ross P .; Davis, Stephen R .; Moote, Robert (1992). Ampliación de DOS: 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.
- ^ Schmit, Michael L. (1995). Herramientas de optimización del procesador Pentium (1 ed.). Cambridge, MA, EE.UU .: Academic Press, Inc. ( Profesional AP ). ISBN 0-12-627230-1.
- ^ Microsoft (otoño de 1989), especificación de interfaz de modo protegido de DOS, versión preliminar de revisión 0.04 (edición preliminar)
- ^ a b c d 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 Exhibit 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 (mire todos los archivos .DOC en la raíz) […] ¡NO! Este es un asunto extremadamente delicado ya que básicamente les dice a […] ISVs (AKA DR-DOS e IBM ) cómo ejecutar Windows en modo estándar . Debe borrarlo con BradSi [lverberg] antes de distribuirlo. [Greg Lowney:] SoftNet hace un limitador . Leen en el manual de C7 que puede ejecutar C7 dos-extended si su limitador admite las extensiones de MS-DOS para la especificación DPMI. Entonces […] nos llamaron para obtener una especificación sobre exactamente cuáles son esas extensiones. Al parecer, no están documentados. […] No son tan complicados, en su mayoría solo las llamadas de MS-DOS y BIOS que asignamos a la aplicación, y Qualitas no tuvo problemas con la ingeniería inversa. (El nuevo 386MAX era, en beta, capaz de ejecutar KRNL386 desde la línea de comandos, pero creo que deshabilitaron esa función en su producto final para evitar pisar nuestros pies. 386MAX, por supuesto, es compatible con C7). […] Ralph , ¿se distribuyó la especificación a los miembros del comité de DPMI? […] [Dave Cole:] Absolutamente NO deberíamos documentar esto. […]
- ^ Microsoft (31 de octubre de 1990). Sokolov, Michael (ed.). "EXTENSIONES DE API DE MS-DOS PARA DPMI HOSTS Versión Pre-Release 0.02" (Ed. Preliminar anotada y reescrita) (publicada 1999-04-08) . Consultado el 23 de mayo de 2016 .
- ^ Microsoft (1989). Sokolov, Michael (ed.). "INTERFAZ DE MODO PROTEGIDO DE DOS (DPMI) - ESPECIFICACIÓN API de modo protegido para aplicaciones extendidas de DOS" (ed. Reconstruida incompleta y anotada) (publicado el 8 de abril de 1999) . Consultado el 23 de mayo de 2016 .
- ^ a b c d Wurthmann, Gerold; 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ünchen [ Presentaciones y material complementario para el segundo foro de desarrolladores sobre arquitectura de PC el 17 de septiembre de 1991, Munich ] (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 ).
- ^ El Comité DPMI (1991-03-12). 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 de 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 DOS para garantizar que una especificación VCPI extendida pudiera utilizar completamente las funciones de virtualización y protección del 80386. En febrero de 1990, las partes involucradas en las actividades mencionadas 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.
- ^ "ARCHIVO: Soporte de Windows Int 21h y NetBIOS para DPMI" . Base de conocimientos . Microsoft . 4 de agosto de 2004 [4 de diciembre de 1999]. KB65128. Q65128. Archivado desde el original el 20 de febrero de 2020 . Consultado el 21 de mayo de 2016 .
- ^ Sokolov, Michael (6 de mayo de 1998). "Corrección de una publicación anterior" . lynx-dev . Archivado desde el original el 20 de febrero de 2020 . Consultado el 20 de febrero de 2020 .
- ^ Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J .; Kyle, Jim (1994) [noviembre de 1993]. DOS sin documentar: una guía del programador para las funciones y estructuras de datos reservadas de MS-DOS, expandida para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2 ed.). Reading, Massachusetts, EE.UU .: Addison Wesley . pag. 194 . ISBN 0-201-63287-X.(xviii + 856 + vi páginas, 3.5 "-floppy) Fe de erratas: [1] [2]
Otras lecturas
- Introducción a la interfaz de modo protegido de DOS: informe técnico . Intel . 1993. Código de pedido de Intel 240787-003. (22 páginas)
- Especificación de la interfaz de modo protegido de DOS (DPMI) - API de modo protegido para aplicaciones extendidas de DOS - Versión 0.9 . Intel . 1990-07-26. Archivado desde el original el 25 de abril de 2012. (112 páginas)
- El Comité DPMI (1991-03-12). 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) . Intel . Código de pedido de Intel 240977-001. Archivado desde el original (PDF) el 31 de mayo de 2013 . Consultado el 31 de mayo de 2013 . (160 páginas)
- Sokolov, Michael (26 de abril de 1998). "Algo de historia sobre DPMI" . Archivado desde el original el 22 de mayo de 2016. [3] [4]
- Chui, Paul (1 de febrero de 1992). "DOS sin documentar de Windows 3 en modo protegido" . Diario del Dr. Dobb . Archivado desde el original el 20 de septiembre de 2018 . Consultado el 20 de septiembre de 2018 .
- "MS-DOS 5.0 DPMI" (en inglés y japonés). 24 de julio de 2016 [22 de junio de 2016]. Archivado desde el original el 17 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .(MSDPMI en japonés MS-DOS 5.00A para la plataforma PC-98 ).
enlaces externos
- "Especificación de interfaz de modo protegido de DOS (DPMI) - API de modo protegido para aplicaciones extendidas de DOS - Versión 0.9" (edición convertida en HTML). Tenberry Software, Inc. 1998 [ 26 de julio de 1990]. Archivado desde el original el 21 de mayo de 2016 . Consultado el 19 de diciembre de 2006 .
- "Especificación API de programación DPMI 1.0" (HTML convertido ed.). DJ Delorie . Abril de 1996 [1991]. Archivado desde el original el 21 de mayo de 2016 . Consultado el 28 de julio de 2019 .
- Sandmann, Charles W. "CWSDPMI" . Archivado desde el original el 16 de noviembre de 2015.
- Jafet. "Extensor HX DOS" . Archivado desde el original el 13 de octubre de 2014.
- Smith, Bob. "Archivo de documentación DPMIONE versión 0.91" . Archivado desde el original el 21 de mayo de 2016 . Consultado el 28 de julio de 2019 .