stringtranslate.com

WoW64

En informática en plataformas Microsoft , WoW64 ( W indows de 32 bits o Windows de 64 bits) es un subsistema del sistema operativo Windows capaz de ejecutar aplicaciones de 32 bits en Windows de 64 bits. [1] Está incluido en todas las versiones de 64 bits de Windows, excepto en Windows Server Server Core , donde es un componente opcional, y en Windows Nano Server , donde no está incluido. [a] WoW64 tiene como objetivo solucionar muchas de las diferencias entre Windows de 32 bits y Windows de 64 bits, particularmente involucrando cambios estructurales en el propio Windows.

Bibliotecas de traducción

El subsistema WoW64 comprende una capa de compatibilidad liviana que tiene interfaces similares en todas las versiones de 64 bits de Windows. Su objetivo es crear un entorno de 32 bits que proporcione las interfaces necesarias para ejecutar aplicaciones de Windows de 32 bits sin modificar en un sistema de 64 bits. WOW64 se implementa utilizando varias DLL, algunas de las cuales incluyen: [3]

  1. Wow64.dll, la interfaz principal del kernel de Windows NT que traduce (thunks) entre llamadas de 32 y 64 bits, incluidas manipulaciones de puntero y pila de llamadas.
  2. Wow64win.dll, que proporciona los puntos de entrada adecuados para aplicaciones de 32 bits (thunks win32k)
  3. Una DLL que permite ejecutar instrucciones x86 de 32 bits, que varía según la arquitectura del conjunto de instrucciones .
    • En x86-64 , Wow64cpu.dllse encarga de cambiar el procesador del modo de 32 bits al de 64 bits. Esto es computacionalmente económico, ya que las máquinas x86-64 tienen un modo nativo para ejecutar código x86 de 32 bits. [4]
    • En IA-64 ( Itanium 2 ), se necesitan tres archivos para una emulación de software [5]Wow64cpu.dll más lenta: una "capa de abstracción de CPU"; IA32Exec.bin, el emulador de software x86; y Wowia32x.dll, el puente entre el emulador y el sistema WOW64. [6]
    • En ARMv8 de 64 bits , xtajit.dllpara emulación x86 y wowarmhw.dllpara cambiar al modo ARM32. [3]

Registro y sistema de archivos.

El subsistema WoW64 también maneja otros aspectos clave de la ejecución de aplicaciones de 32 bits. Participa en la gestión de la interacción de aplicaciones de 32 bits con los componentes de Windows, como el Registro , que tiene claves distintas para aplicaciones de 64 y 32 bits. Por ejemplo, HKEY_LOCAL_MACHINE\Software\Wow6432Node es el equivalente de 32 bits de HKEY_LOCAL_MACHINE\Software (aunque las aplicaciones de 32 bits no conocen esta redirección). Algunas claves de Registro se asignan de 64 bits a sus equivalentes de 32 bits, mientras que otras tienen su contenido reflejado, según la edición de Windows.

El sistema operativo utiliza el %SystemRoot%\system32directorio para su biblioteca de 64 bits y archivos ejecutables. Esto se hace por razones de compatibilidad con versiones anteriores, ya que muchas aplicaciones heredadas están codificadas para usar esa ruta. Al ejecutar aplicaciones de 32 bits, WoW64 redirige de forma transparente el acceso a "system32" (por ejemplo, cargas DLL) a %SystemRoot%\SysWoW64, que contiene bibliotecas y ejecutables de 32 bits. Las excepciones a estas redirecciones son: [7]

La redirección ayuda a mantener funcionando las aplicaciones de 32 bits sin que tengan que estar al tanto del estado de WoW64. [7] Si una aplicación de 32 bits quiere acceder al directorio real %SystemRoot%\System32, puede hacerlo a través del pseudodirectorio %SystemRoot%\sysnativedesde Windows Vista. [7] La ​​detección del estado de Wow64 es posible a través de IsWow64Process().

Hay dos directorios de Archivos de programa , cada uno visible para aplicaciones de 32 y 64 bits. El directorio que almacena los archivos de 32 bits se llama Archivos de programa (x86) para diferenciar entre ambos, mientras que el de 64 bits mantiene el nombre tradicional de Archivos de programa sin ningún calificador adicional. La redirección del sistema de archivos no se utiliza para mantener la separación; en cambio, los cambios de WoW64 y resultados de consultas similares apuntan a los programas de instalación al directorio correcto. [8]FOLDERID_ProgramFiles

También se encuentran algunos directorios nuevos en ARM64, donde WOW64 maneja no solo la ejecución de programas x86 de 32 bits, sino también programas ARM de 32 bits, que utiliza SysArm32en su lugar. ARM64 también admite el llamado CHPE "PE híbrido compilado", que tiene código ARM64 en un contenedor dll x86 (para una compatibilidad más eficiente y sin emulación); Estos archivos DLL se encuentran en SyCHPE32. [9]

Compatibilidad de aplicaciones

Las aplicaciones de 32 bits que incluyen sólo controladores de dispositivos en modo kernel de 32 bits , o que se conectan al espacio de proceso de componentes que se implementan exclusivamente como procesos de 64 bits (por ejemplo, el Explorador de Windows) no se pueden ejecutar en una plataforma de 64 bits.

Se admiten aplicaciones de servicio de 32 bits. La carpeta SysWOW64 ubicada en la carpeta Windows en la unidad del sistema operativo contiene varias aplicaciones para admitir aplicaciones de 32 bits (por ejemplo, cmd.exe, odbcad32.exe, para registrar conexiones ODBC para aplicaciones de 32 bits). Las aplicaciones heredadas de 16 bits para MS-DOS y las primeras versiones de Windows suelen ser incompatibles con las versiones de 64 bits de Windows Vista, 7, 8 y 10, pero se pueden ejecutar en un sistema operativo Windows de 64 bits mediante un software de virtualización. Por otro lado, las versiones de 32 bits de Windows XP, Vista, 7, 8 y 10 normalmente pueden ejecutar aplicaciones de 16 bits con pocos o ningún problema. Las aplicaciones de 16 bits no se pueden ejecutar directamente en las ediciones x64 de Windows porque la CPU no admite el modo VM86 cuando se ejecuta en x64.

Internet Explorer se implementa como aplicación de 32 y 64 bits debido a la gran cantidad de componentes ActiveX de 32 bits en Internet que no podrían conectarse a la versión de 64 bits.

Anteriormente, la versión de 32 bits se usaba de forma predeterminada y era difícil configurar la versión de 64 bits como navegador predeterminado. Esto cambió en Internet Explorer 10, que ejecutaba complementos de 32 bits dentro de una sesión de 64 bits, eliminando la necesidad de cambiar entre las dos versiones. Si un usuario ingresara a la carpeta de 32 bits (generalmente C:\Program Files (x86)\Internet Explorer) y hiciera doble clic en el archivo iexplore.exe allí, la versión de 64 bits aún se cargará. En Internet Explorer 9 y versiones anteriores, esto cargaría sólo la versión de 32 bits.

A partir de 2010 , un error en la capa de traducción de la versión x64 de WoW64 [10] [11] también hace que todas las aplicaciones de 32 bits que dependen de la función API de Windows GetThreadContext sean incompatibles. Dichas aplicaciones incluyen depuradores de aplicaciones, rastreadores de pilas de llamadas (por ejemplo, IDE que muestran la pila de llamadas) y aplicaciones que utilizan motores de recolección de basura (GC). Uno de los motores GC más utilizados pero afectados [12] es el Boehm GC . También se utiliza como recolector de basura predeterminado del igualmente popular Mono . Si bien Mono ha introducido un nuevo GC (pero opcional) a partir de octubre de 2010 llamado SGen-GC, realiza escaneo de pila de la misma manera que Boehm GC, por lo que también lo hace incompatible con WoW64. Hasta julio de 2016 no se ha proporcionado ninguna solución, aunque se han sugerido soluciones alternativas. [13]

Actuación

Según Microsoft, el software de 32 bits que se ejecuta en WOW64 (x64) tiene un rendimiento similar al que se ejecuta en Windows de 32 bits, pero con menos subprocesos posibles. En un sistema que no sea x64, WOW64 genera una sobrecarga de rendimiento debido a la emulación de software involucrada. [5]

A una aplicación de 32 bits se le pueden asignar 4 gigabytes completos de memoria virtual en un sistema de 64 bits, mientras que en un sistema de 32 bits, parte de esta memoria direccionable se pierde porque la utilizan el núcleo y los periféricos asignados en memoria, como como adaptador de pantalla , lo que normalmente da como resultado que las aplicaciones puedan usar 2 GB o 3 GB de RAM como máximo.

Ver también

Notas

  1. ^ Específicamente:Wine , que no es un producto de Microsoft, también ofrece WoW64 experimental en su versión x64. [2] El vino también tiene wow64.dll, wow64win.dlly wow64cpu.dll.

Referencias

  1. ^ QuinnRadich; DC el friki; msatranjr (19 de agosto de 2020). "Detalles de implementación de WOW64". aprender.microsoft.com . Archivado desde el original el 16 de abril de 2023 . Consultado el 16 de abril de 2023 .
  2. ^ Conway, Adán (25 de enero de 2023). "Se lanzó Wine 8.0 con mejor compatibilidad con el controlador, compatibilidad experimental con WoW64 y más". Desarrolladores XDA . Archivado desde el original el 16 de abril de 2023 . Consultado el 16 de abril de 2023 .
  3. ^ ab "Detalles de implementación de WOW64". Microsoft . Consultado el 21 de abril de 2018 .
  4. ^ Eckels, Stephen (9 de noviembre de 2020). "WOW64! Ganchos: partes internas del subsistema WOW64 y técnicas de enganche". Mandante .
  5. ^ ab "Rendimiento y consumo de memoria en WOW64". Microsoft . Consultado el 6 de mayo de 2013 .
  6. ^ "Detalles de implementación de WOW64 (Windows)". web.archive.org . 26 de abril de 2010.– Versión anterior del artículo, que se muestra Wow64cpu.dllcomo parte de la implementación de IA-64.
  7. ^ abc "Redirector del sistema de archivos (Windows)". msdn.microsoft.com .
  8. ^ "winapi - SHGetFolderPath() 32 bits frente a 64 bits". Desbordamiento de pila .
  9. ^ Beneš, Petr (4 de noviembre de 2018). "Partes internas de WoW64: redescubriendo Heaven's Gate en ARM". área sin sentido (wbenny.github.io) .
  10. ^ Sierra, Zach (13 de noviembre de 2010). "Error WOW64: GetThreadContext() puede devolver contenido obsoleto". Blog de Zach Saw . Consultado el 15 de noviembre de 2010 .
  11. ^ "Error del sistema operativo WOW64: las antiguas aplicaciones XP de 32 bits fallan en Win7 WOW64". Red de desarrolladores de Microsoft . 11 de noviembre de 2010 . Consultado el 15 de noviembre de 2010 .
  12. ^ "Discusiones sobre el recolector de basura de Boehm (Boehm GC)" . Consultado el 25 de noviembre de 2010 .
  13. ^ "GetThreadContext devuelve valores de registro obsoletos en WOW64". Microsoft = 23 de julio de 2016 . Consultado el 23 de julio de 2016 .

enlaces externos