Máquina virtual DOS (VDM): ejecutar software DOS en sistemas modernos
Definición, funcionamiento, historia, limitaciones y alternativas para ejecutar aplicaciones DOS y Windows de 16 bits en ordenadores actuales.
Descripción general
Una máquina virtual DOS (VDM) es un entorno de software que permite ejecutar programas diseñados para MS‑DOS o para versiones de Windows de 16 bits sobre un sistema operativo distinto que controla el hardware. Su objetivo es reproducir la interfaz, las llamadas al sistema y los servicios que esperan las aplicaciones DOS sin necesidad de arrancar un sistema DOS nativo. Para documentarse sobre detalles de implementación consulte documentación del sistema.
Galería de imágenes
1 ImagenFuncionamiento técnico
Las VDM emulan aspectos clave del entorno DOS: modos de direccionamiento y ejecución como modo real y virtual 8086, manejo de interrupciones, tabla de descriptores y una emulación básica de BIOS. En arquitecturas x86 la ejecución puede aprovechar mecanismos de CPU para alternar entre modos y aislar la VM. Para detalles sobre modos de CPU y compatibilidad vea especificaciones de arquitectura. Las VDM pueden soportar aplicaciones de 16 bits y, en ciertas implementaciones, algunos binarios de 32 bits ligados a la API DOS o a Windows de 16 bits.
Historia y proyectos representativos
El concepto surgió para facilitar la ejecución de software legado en equipos más recientes. Microsoft incluyó NTVDM en las ediciones de 32 bits de Windows NT/2000/XP; sin embargo, las ediciones de 64 bits suelen prescindir de ese subsistema. Como alternativa independiente se desarrolló DOSBox, orientado especialmente a videojuegos clásicos, y también existen soluciones de virtualización más completas que instalan FreeDOS o MS‑DOS sobre hipervisores. Para lecturas técnicas y antecedentes históricos consulte fuentes técnicas.
Usos prácticos
Las VDM se emplean para ejecutar utilidades empresariales antiguas, programas de contabilidad, software de control industrial y juegos que no fueron portados. Son útiles en preservación digital y en migraciones donde no es viable reescribir aplicaciones. Cuando una aplicación requiere acceso directo a puertos, hardware especializado o sincronización precisa, suele recomendarse una VM completa o una emulación específica en lugar de una VDM ligera.
Limitaciones y recomendaciones
- Compatibilidad parcial con hardware moderno: muchos dispositivos complejos pueden no estar accesibles desde una VDM.
- Seguridad y estabilidad: software antiguo puede no cumplir requisitos actuales y presentar riesgos si se conecta a redes.
- Disponibilidad: en plataformas x86_64 o sistemas no compatibles, el subsistema integrado puede no existir.
Para ejecutar juegos y aplicaciones gráficas clásicas se suele preferir DOSBox; para entornos empresariales con necesidad de red y dispositivos, una máquina virtual completa con FreeDOS sobre un hipervisor ofrece mayor control. Para orientación sobre migración y elección de herramienta vea guías de migración y la documentación del sistema correspondiente.
Resumen
Las máquinas virtuales de DOS utilizan normalmente el modo virtual 8086 del procesador Intel 80386 (o posterior), lo que permite que muchas aplicaciones 8086 funcionen traduciendo los comandos del sistema operativo para hacer creer a las aplicaciones que se están ejecutando en un 8086. El sistema operativo puede entonces emular el software del DOS.
Los VDM, como el modo mejorado de Windows 3.x 386, pueden añadir soporte para el uso de software de modo protegido de 16/32 bits si utilizan la interfaz de modo protegido de DOS (DPMI).
Si un programa DOS en un VDM necesita utilizar un periférico, Windows le dará al programa DOS un controlador de dispositivo virtual (VDD) que emula el hardware utilizando comandos que el sistema operativo en el que se está ejecutando puede entender.
DOS VDMs
Los VDM de DOS aparecieron en Windows/386 2.01 en 1987 y también estaban en Windows 3.x, si se utilizaba el modo mejorado 386, así como en 95, 98, 98 SE y Me.
Al igual que en Windows 3.x, los VDM pueden permitirle ejecutar muchas aplicaciones DOS a la vez si utiliza la opción EMM386 /MULTI. Digital Research / Novell estaba trabajando en un sistema similar desde 1991 bajo el nombre en clave "Vladivar" (originalmente un controlador de dispositivo KRNL386.SYS y no parte de EMM386). Se hizo para la siguiente versión de DR DOS, lanzada como Novell DOS 7 en 1994, pero también se utilizó en su proyecto "Star Trek", en el que dejaron de trabajar antes de terminarlo.
OS/2 MVDM
Los VDMs llamados MVDM (Multiple Virtual DOS Machine) se utilizan en OS/2 2.0 y posteriores. Las MVDM de OS/2 son mejores que las NTVDM en muchos aspectos, por ejemplo con los dispositivos de bloque. Mientras que el OS/2 1.x emulaba el DOS 3.0, el 2.x emulaba el DOS 5.0.
La ejecución de aplicaciones de Windows 3.1 en OS/2 es similar al modo XP en Windows 7, pero las tecnologías utilizadas son muy diferentes. Un VDM "invitado" permite a los programas utilizar los discos del sistema operativo OS/2 o NT que está ejecutando el VDM. Las aplicaciones en un VDM pueden usar tuberías con nombre para hablar con su "anfitrión". []
Windows NTVDM
NTVDM está incluido en todas las versiones x86 de Windows realizadas en NT, y permite ejecutar aplicaciones Windows de 16 bits y DOS de 16/32 bits. No se incluye con las versiones de 64 bits (ver Limitaciones). ntvdm.exe ayuda a emular las APIs necesarias para ejecutar aplicaciones DOS y Windows de 16 bits.
NTVDM utiliza NTIO.SYS y NTDOS.SYS, que ejecuta una versión modificada de COMMAND.COM. Los archivos de sistema de 16 bits son versiones más pequeñas de sus homólogos de MS-DOS 5.0, incluyendo IO.SYS, MSDOS.SYS y COMMAND.COM, que eliminan los sesgos con el sistema de archivos FAT y también pueden llamar al NTVDM de 32 bits si es necesario. NTDOS originalmente dio una versión de DOS de 30.00 a los programas, pero esto pronto fue cambiado a 5.00 para permitir que más programas se ejecuten sin ser cambiados Sin embargo, hay muchas funciones y comandos más nuevos de MS-DOS añadidos a las versiones 6.x de MS-DOS y en Windows 9x que no están allí.
Los programas de 16 bits se ejecutan por separado dentro de un proceso NTVDM de 32 bits. Si se marca la opción "Ejecutar en un espacio de memoria separado" en el cuadro de diálogo Ejecutar o en el acceso directo del programa, se crea un nuevo proceso en su lugar. NTVDM emula las funciones de la BIOS, el kernel de Windows 3.1 y su API de 16 bits.
La emulación de DOS de 32 bits se utiliza para DPMI y para utilizar la memoria de 32 bits. wowexec.exe es el proceso de emulación para Windows de 16 bits. Windows 2000 añadió la emulación de Sound Blaster 2.0 a NTVDM de 32 bits. Los controladores de dispositivos virtuales de 16 bits y DOS no se pueden ejecutar. Los programas Win16 pueden comunicarse con otras partes de Windows utilizando OLE, DDE y named pipes.
Como el modo virtual 8086 no está disponible en los procesadores no x86, NTVDM era un emulador completo para NT en estas arquitecturas. NT 3.51 sólo podía 80286, pero desde NT 4.0 se añadió la emulación de 486.
Cuestiones de seguridad
En enero de 2010, el investigador de seguridad de Google Tavis Ormandy descubrió un gran problema de seguridad en el sistema NTVDM que permitía a los no administradores aumentar sus permisos hasta el nivel de SISTEMA. Ormandy afirmó que era un problema para todas las versiones x86 de Windows NT posteriores a 1993. Las versiones de 32 bits de NT 3.X/4.0, 2000, XP, 2003, Vista, 2008 y 7 estaban afectadas. Ormandy publicó cómo funciona el problema. Antes de que Microsoft pudiera solucionarlo, se podía desactivar el soporte de aplicaciones de 16 bits para resolver el problema, pero esto hacía que no se pudieran ejecutar programas de 16 bits. x64 Windows nunca tuvo este problema porque no utiliza NTVDM. Después de aplicar las correcciones de seguridad que Microsoft puso a disposición, NTVDM podía activarse con seguridad.
Limitaciones
NTVDM y wowexec tenían limitaciones en Windows XP y posteriores debido a un límite de objetos GDI por sesión, que podía provocar que los manejadores GDI se movieran dos bits a la derecha al cambiar de 32 a 16 bits. Por lo tanto, los manejadores no podían ser mayores de 14 bits, por lo que los programas de 16 bits con un manejador GDI mayor de 16384 se bloqueaban.
En las CPU x86-64, el modo virtual 8086 sólo está disponible como submodo heredado (si se ejecuta un sistema operativo de 32 bits), pero no en el modo largo de 64 bits, razón por la cual NTVDM no se incluye con las versiones de 64 bits de Windows, por lo que las aplicaciones de 16 bits no pueden ejecutarse en Windows de 64 bits. Necesitará Windows XP Mode o un software de virtualización similar para ejecutar programas de 16 bits dentro de un sistema operativo de 64 bits.
NTVDM no puede ejecutar juegos de DOS en los ordenadores actuales. La emulación sólo se proporciona para los periféricos simples. Por ejemplo, el sonido en NTVDM puede ser limitado. Windows NT sólo actualiza la pantalla unas pocas veces por segundo cuando los programas de DOS escriben en ella, y no pueden emular las opciones gráficas de alta resolución. Como el software se ejecuta a la velocidad de la CPU, todos los bucles de sincronización se detienen demasiado pronto. Esto hace que los juegos se ejecuten demasiado rápido, o hace que el software no vea algunos periféricos de hardware emulados, porque no puede esperar tanto tiempo para una respuesta.
Páginas relacionadas
- Virtualización
- Ventanas en Windows
Artículos relacionados
Autor
AlegsaOnline.com Máquina virtual DOS (VDM): ejecutar software DOS en sistemas modernos Leandro Alegsa
URL: https://es.alegsaonline.com/art/105574
Fuentes
- antonis.de : NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds · web.archive.org
- drdos.net : OpenDOS Developer's Reference Series — OpenDOS Multitasking API Guide — Programmer's Guide
- drdos.net : DR-DOS 7.02 User Guide
- redbooks.ibm.com : "OS/2 Workplace Shell Configuration Techniques"
- technet.microsoft.com : Chapter 27 - Windows Compatibility and Migration: Windows NT 4.0 Resource Kit
- windowsitpro.com : How do I troubleshoot MS-DOS programs running on Windows XP?
- support.microsoft.com : INFO: How Windows handles floating-point calculations
- technet.microsoft.com : "Microsoft Security Bulletin MS10-015 - Important: Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege (977165)"
- archives.neohapsis.com : "Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack"
- theinquirer.net : "Ancient Windows flaw found after 17 years"
- microsoft.com : "Microsoft Security Advisory (979682): Vulnerability in Windows Kernel Could Allow Elevation of Privilege"
- vttoth.com : The "Win 16 Subsystem has insufficient resources to continue running" problem on Windows XP
- download.intel.com : Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C