Windows en Windows (WOW): compatibilidad para programas Windows de 16 bits
Descubre WOW (Windows en Windows): cómo Windows NT ejecuta programas Windows de 16 bits, compatibilidad, soluciones y trucos para mantener tus aplicaciones heredadas funcionando.
En el caso de los ordenadores, Windows en Windows (a menudo abreviado como WOW) es una capa de compatibilidad de las versiones x86 de la familia de sistemas operativos Microsoft Windows NT que permite ejecutar muchos programas heredados de 16 bits que se hicieron para Windows 3.x o antes. WOW fue diseñado para facilitar la transición de aplicaciones antiguas a la arquitectura de 32 bits sin obligar a los usuarios o desarrolladores a reescribir todo el software legado.
Qué es WOW y cómo funciona
WOW funciona como un subsistema de compatibilidad dentro del kernel y del espacio de usuario de Windows NT. Cuando se ejecuta una aplicación de 16 bits, WOW traduce (o "thunkea") llamadas y estructuras de datos de la API de 16 bits a las equivalentes de 32 bits, permitiendo que el código antiguo interactúe con los servicios modernos del sistema operativo. Esta traducción puede incluir conversión de punteros, adaptación del modelo de memoria segmentada de 16 bits al modelo plano de 32 bits y mapeo de objetos de interfaz gráfica y gestión de mensajes.
En implementaciones clásicas, el soporte para aplicaciones de 16 bits se proporciona junto con componentes como WOWEXEC y, para programas basados en DOS, mediante NTVDM (NT Virtual DOS Machine). Sin embargo, las aplicaciones de 16 bits no ejecutan en modo real sobre el hardware: las llamadas directas a dispositivos, interrupciones y acceso a puertos están restringidos por razones de estabilidad y seguridad.
Limitaciones y consideraciones importantes
- No disponible en sistemas x64. Las versiones de Windows de 64 bits no incluyen el soporte para ejecutar programas de 16 bits de forma nativa; si intenta abrir un ejecutable de 16 bits en un Windows x64 normalmente recibirás un mensaje de error indicando que la aplicación no es compatible.
- Compartición de espacio de memoria en 32 bits. En muchas versiones de Windows, varios procesos de 16 bits comparten partes del mismo espacio de direcciones de 32 bits, por lo que un fallo en una aplicación de 16 bits podía afectar a otras aplicaciones de 16 bits en ejecución.
- Sin soporte para controladores de 16 bits ni acceso directo a hardware. Programas antiguos que dependían de drivers o de acceso a puertos y a la memoria física suelen no funcionar correctamente bajo WOW.
- Compatibilidad variable. Aunque muchas aplicaciones simples funcionan bien, otras más complejas (juegos con protección, herramientas de instalación antiguas, utilidades de hardware) pueden presentar problemas o no ejecutarse.
- Riesgos de seguridad. Ejecutar software antiguo y sin actualizaciones puede implicar vulnerabilidades; conviene aislar ese software (por ejemplo en una máquina virtual) y no usarlo con datos sensibles.
Alternativas para ejecutar programas de 16 bits
- Instalar una versión de 32 bits de Windows en una máquina virtual (VirtualBox, VMware, Hyper-V) y ejecutar allí las aplicaciones de 16 bits.
- Usar emuladores especializados como DOSBox para juegos y aplicaciones DOS antiguas.
- Emplear soluciones como WineVDM / OTVDM (proyectos de código abierto) que permiten ejecutar binarios de 16 bits en sistemas Windows x64 en algunos casos.
- Utilizar una instalación física antigua o un equipo dedicado con una versión compatible de Windows cuando la compatibilidad y el rendimiento nativo sean imprescindibles.
- Si el objetivo es mantener una aplicación en producción, considerar la actualización o reescritura de la aplicación en una plataforma moderna de 32/64 bits para mejorar seguridad y soporte a largo plazo.
Diferencia entre WOW y WoW64
Es importante no confundir WOW (Windows on Windows, para ejecutar aplicaciones de 16 bits en Windows de 32 bits) con WoW64, que es la capa que permite ejecutar aplicaciones de 32 bits en versiones de Windows de 64 bits. Ambos nombres son parecidos pero sirven a propósitos distintos.
En resumen, Windows en Windows (WOW) fue una solución práctica para mantener la compatibilidad con software antiguo en las versiones x86 de Windows NT, pero su uso hoy está limitado por las arquitecturas modernas y por razones de seguridad y compatibilidad. Para ejecutar programas de 16 bits hoy en día lo más habitual es usar máquinas virtuales, emuladores o proyectos especializados que adaptan esa funcionalidad a sistemas actuales.
Fondo
WOW permite que muchos programas de 16 bits de Windows se ejecuten sin cambios en las nuevas versiones de 32 bits de Windows. Esto se hizo para dar tiempo a los desarrolladores de software a hacer su software de 32 bits mientras la gente pasaba de Windows 3.1x a Windows 95, por lo que el sistema operativo puede actualizarse a una versión más reciente mientras se ejecutan la mayoría, o todos, los programas de 16 bits de un cliente.
Los sistemas operativos Windows 9x, que se hicieron sobre DOS, tenían sistemas de 16 y 32 bits, por lo que si se mantenían esas partes de 16 bits, el SO podía ejecutar software de 16 bits sin necesidad de emulación. Las versiones basadas en NT son muy diferentes en cuanto a su ejecución, por lo que necesitan una solución más sofisticada. Existen dos técnicas principales para permitir que los programas de 16 bits se ejecuten en las versiones de 32 bits de Windows (con algunas limitaciones), llamadas thunking y shimming.
Thunking
WOW convierte las instrucciones de 16 bits en equivalentes de 32 bits para permitir punteros, espacios de memoria y espacios de direcciones de 16 bits.
Los programas de 16 bits suelen ejecutarse en una única máquina virtual de DOS, compartiendo la memoria entre ellos. Sin embargo, se pueden cambiar para que se ejecuten en un espacio de memoria privado y separado, donde cada proceso de 16 bits tiene un proceso separado. Esto puede reducir las caídas del sistema al no permitir que los programas interfieran con otros, pero puede causar una reducción de la comunicación entre procesos de 16 bits y puede utilizar más memoria de su ordenador.
WOW forma parte de las ediciones de 32 bits de Windows NT. Las versiones de 64 bits de Windows (incluyendo Windows Server 2008 R2 y posteriores donde sólo tienen versiones de 64 bits) no pueden ejecutar software de 16 bits sin utilizar un software de emulación diferente (por ejemplo, DOSBox).
WOWEXEC.EXE en Windows NT permite que WoW funcione. Windows-en-Windows puede, mediante el archivo WIN.COM, emular los núcleos de Windows 3.x (para NTVDM), Windows 95 y Windows 98, que pueden ejecutar aplicaciones de Windows de 16 bits con tecnología DOS en Windows NT.
Puesta a punto
Los problemas con las aplicaciones que se ejecutan en los sistemas operativos más recientes, especialmente con nombres de archivo largos, múltiples cuentas de usuario y con menos privilegios, pueden impedir que algunas aplicaciones funcionen correctamente. Por ejemplo, pueden pensar incorrectamente que pueden escribir archivos en cualquier parte del sistema de archivos, pero los permisos de archivo NTFS existen y no lo permiten en muchas carpetas del sistema. Cuando Microsoft estaba construyendo Windows 95, tuvo que asegurarse de que los programas antiguos siguieran funcionando con nombres de archivo 8.3 para permitir que las aplicaciones antiguas siguieran funcionando correctamente. Desde Windows 95, había una función en la que se mantenían tanto el nombre de archivo largo como el corto, por lo que las aplicaciones antiguas podían seguir utilizando los nombres de archivo 8.3.
Los programas que intentan acceder directamente al hardware no pueden hacerlo. Los programas antiguos también pueden no funcionar si esperan ciertos archivos de configuración del sistema de DOS y Windows 9x que no se utilizan en los sistemas operativos de Windows NT, por lo que existen versiones vacías de archivos como AUTOEXEC.BAT y CONFIG.SYS aunque Windows NT no los utilice.
Existen muchos calzos en la capa de compatibilidad de las aplicaciones de las versiones posteriores de Windows para capturar y cambiar las llamadas a la API de las aplicaciones antiguas hechas con diferentes suposiciones sobre el sistema operativo en mente.
Páginas relacionadas
Buscar dentro de la enciclopedia