¿Qué hace exactamente que un programa de 32 bits sea compatible con un sistema operativo de 64 bits?

Si su PC ejecuta Windows de 64 bits, probablemente encontrará una carpeta de Archivos de programa (x86) en su disco duro. Esto almacena aplicaciones de 32 bits, mientras que la otra carpeta ‘Archivos de programa’ contiene todas las aplicaciones de 64 bits que ha instalado.

En general, los sistemas de 64 bits pueden ejecutar programas de 32 bits, ya que son compatibles con versiones anteriores. Sin embargo, no funciona al revés: una computadora de 32 bits no puede ejecutar Windows de 64 bits o programas de 64 bits.

Las aplicaciones basadas en Windows de 32 bits se ejecutan sin problemas en Windows de 64 bits. WOW64 se proporciona con el sistema operativo y no tiene que habilitarse explícitamente. Para obtener más información, consulte los detalles de implementación de WOW64.

El sistema aísla las aplicaciones de 32 bits de las aplicaciones de 64 bits, lo que incluye la prevención de colisiones de archivos y registros. La consola, la GUI y las aplicaciones de servicio son compatibles. El sistema proporciona interoperabilidad a través del límite 32/64 para escenarios como cortar y pegar y COM. Sin embargo, los procesos de 32 bits no pueden cargar archivos DLL de 64 bits para su ejecución, y los procesos de 64 bits no pueden cargar archivos DLL de 32 bits para su ejecución. Esta restricción no se aplica a las DLL cargadas como archivos de datos o archivos de recursos de imagen; Para obtener más información, consulte LoadLibraryEx .

Una aplicación de 32 bits puede detectar si se está ejecutando bajo WOW64 llamando a la función IsWow64Process . La aplicación puede obtener información adicional sobre el procesador mediante el uso de la función GetNativeSystemInfo .

No son necesariamente incompatibles. El problema proviene de cómo el programa aborda la memoria.

Las direcciones de memoria son números. Piense en las descripciones de bits en su pregunta como cuánto tiempo puede usar un número para describir una dirección en particular. Para simplificar la situación, si pudiera usar un número de cuatro dígitos para describir una ubicación, podría, por ejemplo, elegir 1234. Pero si un poco de información que desea usar está en la dirección de 12345, no puede acceder a ella porque solo puede usar cuatro dígitos.

Ese es el tipo de problema que surge. Un programa espera un cierto ‘espacio de direcciones’, pero el sistema operativo tiene un espacio de direcciones mucho más grande. Algunas veces esto no es un problema, ya que el programa puede funcionar en un espacio de direcciones mucho más grande, pero a veces surge un problema en el que se le pide al programa que mire una dirección que no puede leer.

La CPU en sí misma proporciona modos de ejecución de 32/64 bits y un segmento particular se puede configurar en cualquiera de los dos. No estoy seguro de si los modos de 16 bits todavía están disponibles en las CPU de tipo I3 / 5/7 recientes. Por supuesto, cualquier programa que se ejecute bajo un sistema operativo no está completo, puede necesitar bibliotecas vinculadas dinámicamente y definitivamente necesita realizar llamadas al sistema. Esto significa que el sistema operativo en sí necesita tener un subsistema completo de 32 bits para manejar estas llamadas al sistema, que también incluye la capacidad de la biblioteca de carga.

Por lo tanto, para ser completamente compatible, el subsistema de 32 bits debe implementar todas las llamadas del sistema que utiliza el programa de 32 bits y deben instalarse las bibliotecas dinámicas de 32 bits apropiadas. En un sistema operativo como FreeBSD, es posible agregar diferentes tipos de compatibilidad de 32 bits, como la emulación de Linux, en cuyo caso realmente necesita cargar la mayor parte de la distribución de Linux correspondiente para ejecutar la aplicación. Existe una situación similar para usar WINE para ejecutar programas de Windows en BSD o Linux.

Es probable que el acceso directo al hardware cause problemas, es decir, las aplicaciones que solo usan bibliotecas estándar funcionarán bien, aquellas que desean acceso directo al hardware para un mayor rendimiento tienen más probabilidades de tener problemas.