Windows on Windows
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.
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.