Motivo : para garantizar la compatibilidad con versiones anteriores
¿Qué es la retrocompatibilidad?
La compatibilidad con versiones anteriores es un término utilizado para describir software o hardware que es compatible con versiones anteriores de software o sistemas operativos. Sin compatibilidad con versiones anteriores, un programa que funciona con un procesador de computadora o sistema operativo dejaría de funcionar con la nueva versión. Una versión de 32 bits del reproductor multimedia VLC puede ejecutarse sin problemas en un sistema operativo Windows de 64 bits, o un juego de PC diseñado para Windows XP puede ejecutarse sin problemas en Windows 10, todo gracias a la compatibilidad con versiones anteriores.
Pero, ¿cómo garantiza un sistema operativo Windows de 64 bits la compatibilidad con versiones anteriores?
Microsoft garantiza que las aplicaciones de 32 bits (x86) y 64 bits (x64) pueden ejecutarse en sistemas operativos Windows de 64 bits. Cuando un programa de 32 bits se ejecuta en Windows de 64 bits, se invocará un emulador de 32 bits para manejar el programa de 32 bits. El emulador hará que la aplicación de 32 bits piense que se está ejecutando en Windows de 32 bits y la misma funcionalidad a la que se puede acceder en Windows de 32 bits también será accesible para el programa en Windows de 64 bits.
Un Windows de 64 bits tiene dos versiones diferentes de la carpeta de archivos de programa y la carpeta del sistema de Windows (directorio del sistema). Una versión está diseñada para archivos de 32 bits y la otra versión está diseñada para archivos de 64 bits. El nombre de estas carpetas y el bitness para el que están diseñadas se muestran en la siguiente tabla:
Carpeta | Bitness | Descripción |
---|---|---|
Sistema32 | 64 | Carpeta del sistema de Windows (directorio del sistema) para archivos de 64 bits |
SysWow64 | 32 | Carpeta del sistema de viudas (directorio del sistema) para archivos de 32 bits |
Archivos de programa | 64 | Carpeta para archivos de programa de 64 pero |
Archivos de programa (x86) | 32 | Carpeta para archivos de programa de 32 bits |
Ahora, surge la pregunta, ¿por qué la carpeta que almacena los archivos binarios requeridos por las aplicaciones de 64 bits se llama System32 y por qué Microsoft eligió nombrar la carpeta que contiene los archivos requeridos por las aplicaciones de 32 bits ‘SysWOW64’ (Windows en Windows 64)?
Bueno, esto ciertamente parece ilógico pero tiene una explicación. Tiene que ver con la compatibilidad. Inicialmente, Microsoft tenía la intención de cambiar el nombre de la carpeta, pero decidió no hacerlo porque muchos desarrolladores codificaron la ruta a la carpeta del sistema en el código fuente de sus aplicaciones. Han incluido «System32» en la ruta de la carpeta. Y para preservar la compatibilidad, si la aplicación se convierte a código de 64 bits, la carpeta del sistema de 64 bits todavía se llama System32.
Pero, ¿qué pasa con las aplicaciones de 32 bits que tienen la ruta del sistema codificada y se ejecutan en Windows de 64 bits? ¿Cómo pueden encontrar la nueva carpeta SysWOW64 sin cambios en el código del programa?, podrías pensar. La respuesta es que el emulador redirige las llamadas a la carpeta System32 a la carpeta SysWOW64 de forma transparente, por lo que incluso si la carpeta está codificada en la carpeta System32 (como C:\Windows\System32), el emulador se asegurará de que se use la carpeta SysWOW64 en su lugar. . Por lo tanto, el mismo código fuente, que contiene una ruta con la carpeta System32 incluida, se puede compilar en código de programa de 32 y 64 bits sin ningún cambio.
En resumen, Microsoft quería eliminar el nombre ‘System32’ para esa carpeta, pero no lo hizo, de lo contrario, todas las versiones de Windows de 64 bits (desde Windows 7) no podrían ejecutar una gran cantidad de aplicaciones y videojuegos.