Podemos instalar un programa de 64 bits en un sistema operativo de 32 bits?

La mayoría de las otras respuestas son correctas al decir que no se puede instalar y ejecutar un programa de 64 bits en un sistema operativo de 32 bits, pero que generalmente se pueden instalar y ejecutar programas de 32 bits en un sistema operativo de 64 bits.

Sin embargo, la mayoría de las respuestas parece dar por sentado que ejecutar 32 sobre 64 es simple y fácil.

En cuanto a la instalación de un sistema operativo de 32 bits en una CPU de Intel con capacidad de 64 bits, esto es posible porque esas CPU son compatibles con versiones anteriores y el "modo" de 64 bits se activa realmente por software, en algún momento durante las primeras fases del proceso de arranque.

Un sistema operativo de 32 bits, obviamente, no lo hará y la CPU permanecerá en modo de 32 bits y ejecutará felizmente el SO de 32 bits, que nunca se dará cuenta de que se está ejecutando en un procesador con capacidad de 64 bits.

Las aplicaciones de 32 bits se ejecutarán sobre el sistema operativo de 32 bits instalado en una CPU con capacidad de 64 bits sin ningún problema, en gran medida porque la CPU con capacidad de 64 bits dejada en modo de 32 bits está actuando como una CPU de 32 bits a todos los efectos prácticos.

Por otro lado, la ejecución de aplicaciones de 32 bits en una versión de 64 bits del sistema operativo Windows ciertamente no estaba garantizada ni era fácil al principio!

La ejecución de binarios de 32 bits en una versión de 64 bits del sistema operativo Windows sólo es posible gracias a una ENORME inversión de Microsoft (en particular del equipo del kernel) para asegurarse de que las aplicaciones de 32 bits se carguen y ejecuten en Windows de 64 bits como lo harían en una versión de 32 bits del sistema operativo.

Mira tu carpeta WindowsSysWow64 y ten en cuenta que cada archivo que hay allí es una versión especial de 32 bits del componente del sistema de 64 bits correspondiente, diseñado para emular la función, o traducir / reenviar / traducir de nuevo las llamadas de función a los servicios del sistema de la plataforma nativa de 64 bits subyacente.

Sin todo esto, la ejecución de una aplicación de 32 bits en Windows 64 no sería "muy fácil" sino simplemente imposible.

He encontrado una explicación decente en la web: Las carpetas 'Archivos de programa (x86)' y 'SysWOW64' explicadas

Para ampliar un poco, he formado parte del equipo de compatibilidad de apps de la recientemente anunciada versión ARM64 de Windows[1] , que, además de aplicaciones nativas ARM64, también ejecuta aplicaciones ARM de 32 bits e Intel x86 de 32 bits en CPUs ARM64.

Ejecutar aplicaciones Intel de 32 bits en una versión ARM de 64 bits de Windows no es muy diferente de ejecutar ARM de 32 bits en un sistema operativo ARM de 64 bits, o para el caso aplicaciones Intel de 32 bits en una versión Intel de 64 bits del sistema operativo.

Claro, el conjunto de instrucciones es diferente y eso requiere algunos pasos adicionales (en el caso de ARM, la traducción binaria y la compilación x86 a ARM justo a tiempo) pero, salvo este paso bastante mecánico, el problema de ejecutar cosas de 32 bits en Windows 64 es exactamente el mismo.

Con la ayuda de nuestro equipo de ciencia de datos, identificamos las aplicaciones y los juegos más populares, que cubren la gran mayoría de los usuarios de Windows en todo el mundo, y realmente instalamos y probamos todos ellos. Eso supone varios cientos de aplicaciones diferentes y miles de horas de pruebas automatizadas y manuales.

Durante varios meses, se archivaron miles de errores y se solucionaron cientos de problemas en las capas de emulación para garantizar una experiencia fluida para los usuarios finales. En algunas ocasiones, nos pusimos en contacto con los editores y trabajamos con ellos para garantizar la compatibilidad.

Así que, en el mundo de Windows, las aplicaciones de 32 bits en un sistema operativo de 64 bits, con arquitectura cruzada o no, no se producen de forma gratuita o por accidente, sino que son el resultado de un duro trabajo de mucha gente en muchos equipos de Windows, desde la gente de configuración que instala tus aplicaciones hasta la gente del kernel que proporciona los servicios del sistema operativo base y casi todos los demás, y toneladas y toneladas de código especial para emular el entorno que la aplicación de 32 bits espera y necesita para poder ejecutarse.

Footnotes

[1] Microsoft launches Windows 10 on ARM, with HP and ASUS promising 20+ hours of battery life