domingo, 29 de diciembre de 2013

NTVDM

NTVDM es el acrónimo de NT Virtual DOS Machine, es decir, "máquina virtual DOS para NT". Para poder explicar en qué consiste este módulo, para los más jóvenes, vamos a retrasarnos unos cuantos años en el tiempo... hasta aquellos maravilosos días de...

MS-DOS

 

Es un sistema operativo en modo (hoy conocido como) consola. No se manejaba con el ratón, como los actuales sistemas operativos, sino a través casi exclusivamente del teclado, mediante la introducción a través del mismo de los comandos necesarios para la ejecución de programas y aplicaciones. Se trataba de un sistema de 16 bits, que únicamente soportaba los sistemas de archivos FAT12 y FAT16. En la imagen de arriba se muestran diversos juegos que corrían bajo esa plataforma. ¿te suena alguno? ;)

En sus primeras versiones (a principios de los años 1980) ni siquiera soportaba... ¡disco duro! Qué tiempos aquellos, ¿verdad? El ordenador arrancaba  mediante disquetes de 3,5", que sí han sobrevivido hasta que han sido sustituidos totalmente por los pen-drives USB, aunque con capacidades de 1,44 Mb en la gran mayoría de los casos (¡mi primer PC sólo soportaba los disquetes de 720 Kb!)

WINDOWS 95/98/Me


En primer lugar, hay que hacer mención a una cosa: ésos sistemas operativos no son realmente sistemas operativos propiamente dichos, sino más bien entornos operativos. ¿Dónde está entonces el "truco"? MS-DOS es extremadamente ligero, y por esa época los ordenadores eran ya lo suficientemente rápidos como para poder cargar este sistema de sólo texto en cuestión de segundos. Y Windows oculta el arranque mediante su pantalla de bienvenida a Windows (imagen superior). Esa es la razón por la cual Windows parece arrancar desde cero. Pero en realidad Windows 95, 98 y Me se ejecutan después del arranque de MS-DOS. Es cierto que se trata de capas de 32-bits, por lo que ofrecen muchas más posibilidades que el anterior sistema, pero carecen de capacidad de autoarranque, entre otras cosas. Y, dado que se ejecutan sobre un sistema de 16-bits, ofrecen total compatibilidad con los programas diseñados para este tipo de plataformas.

Windows NT, 2000 y superiores 

 


Ascendemos de división en la liga de los Sistemas Operativos. Windows NT presenta un sistema operativo con capacidad de autoarranque, y de 32 bits puro. ¿Y eso qué significa? Pues sí, lo has adivinado a la vez que formulas la pregunta: Microsoft rompe la compatibilidad con los tradicionales sistemas de 16 bits. Pero, estamos hablando de un Sistema Operativo, de una empresa, Microsoft, con miles de millones de usuarios en todo el mundo, y que no están por la labor de deshacerse de sus programas y juegos de toda la vida (¡y esto sigue ocurriendo hoy en día!).

¿Cómo arreglarlo? Microsoft recurre a crear un entorno virtual para este tipo de aplicaciones: la máquina virtual DOS, más conocida como DVM, o NTVDM, que utiliza la API de MS-DOS para proporcionar lo necesario para permitir la ejecución de software de 16 bits en sistemas operativos de 32 bits puros.

NTVDM y ReactOS


ReactOS es un Sistema Operativo de 32 bits puro. Es decir, no es compatible con ningún software que no sea de 32 bits, lo que, por supuesto, incluye a todos aquellos de 16 bits.Como todos sabéis, se encuentra en fase alfa. Sin embargo, han sido muchos usuarios e incluso programadores que han tratado de correr programas, aparentemente de 32 bits, sin éxito. El más famoso de ellos sería Office 97.

¿La razón? Si bien la suite ofimática en sí es un software de 32 bits, el sistema de instalación está montado sobre un programa de 16 bits. Lo cual a su vez quiere decir, que si somos capaces de extraer los programas y ubicarlos en sus correspondientes directorios, sin utilizar el instalador, seríamos igualmente capaces de ejecutar Office. Y os puedo asegurar que así es.

Esto ha llevado recientemente al equipo de desarrolladores de ReactOS a crear su propio entorno NTVDM. Está siendo desarrollado en un árbol distinto al árbol principal de desarrollo (es decir, en un branch). Está siendo desarrollado casi exclusivamente por Hermès Bélusca-Maïto (hbelusca en IRC) y
Aleksandar Andrejevic ([TheFlash] en IRC). En un primer momento, utilizó la biblioteca de código abierto softx86 que, como su nombre indica, pretende emular un procesador x86 (386, mayormente) por software. Sin embargo, estos dos ambiciosos programadores pronto han ido más allá, y han creado su propio emulador, llamado fast486. Y les está yendo estupendamente. Podéis ver su progreso en este bug report.

¿Por qué no usar, por ejemplo, DosBox?


El paradigma Open Source permite, entre otras cosas, la reutilización de código. En lenguaje coloquial, "no reinventar la rueda": Si tenemos algo ya creado que funciona, ¿por qué no utilizarlo?. Así que parecería lógico pensar, que en lugar de reescribir el subsistema completo ("reinventar la rueda"), deberíamos utilizar aquello que ya ha sido implementado y probado.

Pero DosBox tiene un problema que para los dos desarrolladores ha sido fundamental: se trata de un entorno completamente virtual, sin acceso al sistema de archivos del sistema operativo anfitrión, lo cual se consigue tras montar el directorio host como una unidad más del sistema DOS. Algo parecido a montar una imagen ISO como una unidad de CD/DVD en nuestro Windows.

En ReactOS, el objetivo es lograr ejecutar software de 16 bits sin que el usuario final se de cuenta. Lo cual implica acceder directamente al mismo entorno de un programa nativo de 16 bits. Y esto no podía conseguirse con DosBox. Así que el desarrollo de NTVDM comienza desde cero, con el objetivo de que sea ReactOS, el Sistema Operativo anfitrión quien determine, en función de la cabecera del ejecutable en cuestión, si es él mismo quien se encarga de su ejecución, o si delega en el subsistema NTVDM, de forma totalmente transparente para el usuario. Una tarea ingente.

Desde aquí todo mi apoyo a estas dos personas. Pido perdón por la entrada tan larga, pero creo que no hubiera quedado mejor explicado si lo hubiera hecho más corto. Espero que todos hayáis comprendido la necesidad del subsistema NTVDM. Por mi parte, ésto ha sido todo por ahora.

¡Feliz Navidad, y Próspero Año Nuevo!

5 comentarios:

  1. Javier

    Muchas Gracias

    Al contrario, estoy seguro que todos los lectores les gusta encontrar en este blog artículos bien completos para seguir actualizados con las noticias del desarrollo de Reactos.

    La verdad es que en estos últimos días de 2013 el Blog se ha despertado desde el mes de Octubre no teníamos tantas muchas noticias.

    Esperemos que para este 2014 sea por fin el año de Reactos y logre sacar una versión estable.

    A todos los que logren ver este articulo.

    UN GRAN FELIZ AÑO!

    ResponderEliminar
  2. Hola Jose Félix,
    En primer lugar, gracias por tus comentarios. Los redactores de este blog estamos ocupados en nuestras vidas cotidianas, y por ello a veces parece que el blog "ha muerto", pero no es así. Ya nos gustaría poder estar constantemente escribiendo articulos, pero cada uno supone también informarse antes de lo que se va a escribir, y bla, bla.... Así que, también roba tiempo.
    ¡Espero poder estar más a menudo compartiendo cosillas con vosotros!

    ResponderEliminar
  3. ¡Buena noticia!. ReactOS si un día llega a ser estable, uno de sus principales usos será usar software antiguo que no funcione en versiones futuras de Windows. Office 97 es quizás un ejemplo no demasiado bueno, pero seguro que hay multitud de aplicaciones hechas a medida todavía funcionando que se programaron usando la API de 16 bits

    ResponderEliminar
    Respuestas
    1. ...Y tampoco es necesario que utilice la API de 16 bits para usar ReactOS. El soporte para Windows XP, que es, aunque no exactamente, el objetivo de compatibilidad de ReactOS (windows XP y Windows 2003 son prácticamente el mismo núcleo NT, siendo este último una simple actualización del primero), finalizará en Abril de este año. Con millares de aplicaciones creadas para estos sistemas. Así que, esperemos que ReactOS ocupe su lugar.

      Eliminar
  4. wow, que buena noticia

    ResponderEliminar