¿Necesita más RAM para ejecutar programas de 32 bits en Windows de 64 bits?

  • Gabriel Brooks
  • 0
  • 936
  • 104
Anuncio

La mayoría de las computadoras actuales incluyen una versión de Windows de 64 bits y, a menudo, una cantidad mínima de RAM. Esto pone en duda qué tan bien funcionan estos sistemas. Esto es especialmente cierto cuando los usuarios desean ejecutar su software heredado de 32 bits en estas nuevas computadoras.

Lo que plantea una pregunta interesante. ¿Necesita más o menos RAM? ¿Cuánta RAM necesita realmente? ¿Cuánta RAM necesitas realmente? La RAM es como la memoria a corto plazo. Mientras más tareas múltiples, más necesita. Descubra cuánto tiene su computadora, cómo aprovecharla al máximo o cómo obtener más. ejecutar una aplicación de 32 bits en una versión de Windows de 64 bits ¿Qué es la informática de 64 bits? ¿Qué es la computación de 64 bits? El embalaje de una computadora o hardware está lleno de términos técnicos e insignias. Uno de los más destacados es el de 64 bits. ? Esta semana, Bruce Epper se entera.

Un lector pregunta:

¿Es cierto que la ejecución de aplicaciones de 32 bits en un sistema de Windows de 64 bits consume 1.5 veces más memoria en comparación con la ejecución de la aplicación de 32 bits en un sistema operativo Windows de 32 bits?

Respuesta de Bruce:

Anteriormente hemos discutido los beneficios y las desventajas de mantener todo de 64 bits en todos los ámbitos y algunos de los efectos de “mezclar y combinar” Cómo afecta el rendimiento de Windows el hardware y el software Cómo afecta el rendimiento de Windows el hardware y el software En teoría, el software de 32 bits podría superar a su homólogo de 64 bits, dependiendo de la configuración del hardware. ¿Suena complicado? Estamos aquí para tener sentido y ayudarlo a obtener el mejor rendimiento de su sistema. . Hoy vamos a examinar cómo se ejecutan las aplicaciones de 32 bits en las versiones de Windows de 64 bits.

Un sistema operativo Windows de 64 bits no puede ejecutar un programa de Windows de 32 bits sin ayuda adicional. Son demasiado diferentes: desde punteros y tipos de datos, hasta cómo las llamadas al sistema (cómo los programas usan los recursos del sistema operativo subyacente). Necesitas alguna forma de hacerlos compatibles.

Entendiendo WoW64

Windows usa el subsistema WoW64 (Windows32 en Windows64) para compensar las diferencias. Funciona efectivamente como un mini emulador de Windows de 32 bits en sistemas x64 y un emulador completo en sistemas Itanium (IA64).

Los sistemas IA64 requieren un emulador completo debido a las diferencias en las instrucciones del procesador y los tamaños de página de memoria (4K en x86 y x64, 8K en IA64). Dado que los procesadores x64 tienen todas las instrucciones de los procesadores x86 y usan el mismo tamaño de página de memoria, no es necesario un emulador completo.

En ambos casos, WoW64 proporciona una interfaz entre el núcleo de Windows de 64 bits y la versión de 32 bits de ntdll.dll (que contiene una lista de las funciones principales del núcleo de Windows), interceptando las llamadas del núcleo y modificándolas para que puedan ser procesadas por Las funciones nativas de 64 bits proporcionadas por el núcleo de Windows.

Se utilizan 3 archivos DLL en los sistemas x64 / IA64 para lograr esto: wow64cpu.dll, wow64win.dll y wow64.dll. Sus funciones son abstraer las características del procesador y proporcionar thunks (llegaremos a ellos más tarde) en win32k.sys que proporciona el “ventana” funcionalidad y ntoskrnl.exe que contiene el ejecutivo, el núcleo, el administrador de memoria, el programador de procesos (que no debe confundirse con el Programador de tareas accesible desde el Panel de control) y otros elementos centrales del sistema operativo.

Un thunk es una subrutina (piense en esto como una serie de instrucciones que realizan una sola tarea) que permite que un programa ejecute una subrutina o función común en el sistema.

En este caso, extrae los argumentos de la pila de llamadas del programa de 32 bits, los convierte en sus contrapartes de 64 bits y realiza la llamada al sistema de 64 bits. Al regresar de la llamada, convertirá los resultados de 64 bits nuevamente a 32 bits y los devolverá a la pila de llamadas del programa para que la persona que llama los use.

Todo el thunking se realiza en modo de usuario (que tiene permisos limitados) por dos razones. Primero, minimiza los efectos de errores en el código que podrían resultar en un agujero de seguridad, corrupción de datos o un bloqueo del sistema si se ejecuta en modo kernel.

En segundo lugar, reduce el impacto en el rendimiento que tendría si se ejecuta en modo kernel (el modo utilizado por las partes esenciales del sistema operativo) debido a la sobrecarga involucrada al cambiar entre el modo de usuario y el modo kernel y viceversa.

Volviendo a los sistemas Itanium, hay algunas otras diferencias importantes a tener en cuenta. Los sistemas IA64 usan dos archivos adicionales. IA32exec.bin es el emulador de software x86 y Wowia32x.dll proporciona la interfaz entre WoW64 y el emulador de software.

Un proceso de 32 bits cargará estos archivos, así como la versión de 64 bits de ntdll.dll. Estos son los únicos binarios de 64 bits que se pueden cargar en un proceso de 32 bits antes de Windows 7. Windows 7 y posterior también tienen otra DLL, apisetschema.dll, que se cargará en todos los procesos.

Cuando se inicia un proceso de 32 bits, cargará Wow64.dll que a su vez carga la versión de 32 bits de ntdll.dll y cualquier DLL de 32 bits necesaria de % systemroot% \ SysWOW64. La mayoría de estos archivos son idénticos a los binarios en un sistema de 32 bits, aunque algunos han sido reescritos para comportarse de manera diferente bajo WOW64.

Mirando la lista de archivos DLL cargados, podemos ver que hay 9 archivos DLL cargados en el proceso en Win64 que no están allí para el sistema Win32.

Ahora, puede tener la tentación de mirar los tamaños de los archivos, agregarlos y usarlos como base para la cantidad de memoria adicional que se está utilizando, pero terminaría con resultados inexactos. Estos archivos, por su naturaleza, están diseñados para ser componentes compartidos y, como resultado, el primer archivo que requiere una DLL lo carga en la memoria.

Los programas posteriores que requieren la misma DLL no cargan todo el componente en la memoria. Obtienen un puntero al componente ya cargado y asignan RAM para los elementos adicionales que se cargan en el proceso.

Nuestra configuración de prueba

Para ver lo que está sucediendo, he configurado dos máquinas virtuales que ejecutan Windows 7 Ultimate con 2 GB de RAM asignadas a cada una. Una de ellas es la versión de 32 bits y la otra es de 64 bits. Ambos pasaron por el mismo proceso de instalación y parcheo..

Después de que ambos sistemas fueron parcheados, deshabilité el archivo de intercambio en ambos para obtener una mejor imagen del uso de la memoria al garantizar que la RAM no se pudiera paginar en el disco. Una vez que se completó, se instaló LibreOffice 5.0.3.2.

Una copia de Sysinternals Process Explorer Process Explorer - El reemplazo más poderoso del Administrador de tareas [Windows] Process Explorer - El reemplazo más poderoso del Administrador de tareas [Windows] Seamos honestos, el Administrador de tareas de Windows no es tan bueno para comprender y administrar los procesos en ejecución en tu ordenador. Incluso en Windows 8, donde se ha mejorado mucho, el administrador de tareas no puede acercarse a ... también se colocó en ambas máquinas. Esta es la herramienta que utilicé para recopilar información sobre el uso de la memoria. La configuración predeterminada de la columna se modificó para poder ver el uso del conjunto de trabajo y el uso privado de WS.

Estos números de conjunto de trabajo reflejan la cantidad de RAM utilizada por los programas. Se complicó un poco más al reflejar la cantidad de memoria utilizada por las bibliotecas compartidas, incluso si ya estaban cargadas por otro proceso. Debido a esto, si agrega la columna completa, es posible terminar con un total mayor que la RAM instalada. El conjunto de trabajo sigue siendo el mejor indicador de cuánta memoria se requiere exactamente para un proceso..

Los procesos que estamos examinando tampoco son independientes. Los diversos programas de LibreOffice lanzan otro proceso, soffice.exe, que ejecutará otro proceso, soffice.bin. Necesitamos observar los totales de los tres procesos para ver el uso efectivo de la memoria de cada programa..

Para la prueba inicial, simplemente abrí Writer, Calc e Impress individualmente para ver cuánta memoria consumen sin cargar ningún dato y exporté los datos de Process Explorer. Con Calc e Impress, abrí un archivo .xls de 3.7 MB y un archivo .pptx de 3.9 MB respectivamente y grabé el nuevo uso de memoria. Los resultados se pueden ver en la tabla a continuación. Todos los datos están en KB..

La gran sorpresa ocurrió con Impress. Sin un documento, estaba usando 4.1% más RAM en el sistema de 64 bits y 9.9% Menos con el documento cargado Desenterré algunas otras presentaciones y obtuve resultados similares con todas ellas. El sistema de 64 bits terminó usando menos RAM que el sistema de 32 bits.

Entonces, ¿las versiones de Windows de 64 bits requieren más RAM que sus contrapartes de 32 bits al ejecutar aplicaciones de 32 bits? En general si.

¿Pero necesitas actualizar tu RAM? Probablemente no. La diferencia De Verdad No es tan masivo. Ciertamente no es 1.5 veces diferente.




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.