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

¿Necesita más RAM para ejecutar programas de 32 bits en Windows de 64 bits? / Pregunte a los expertos

La mayoría de las computadoras hoy en día se entregan con una versión de Windows de 64 bits, y con frecuencia con una cantidad mínima de RAM. Esto cuestiona 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 realmente necesita? ¿Cuánta RAM realmente necesitas? RAM es como la memoria a corto plazo. Cuanto más multitarea, más necesitas. Averigüe cuánto tiene su computadora, cómo sacar el máximo provecho de ella o cómo obtener más. Lea más para 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 de computadora está lleno de términos técnicos e insignias. Uno de los más destacados es el de 64 bits. Lee mas ? 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 comparado con la ejecución de la aplicación de 32 bits bajo un sistema operativo Windows de 32 bits?

Respuesta de Bruce:

Anteriormente, hemos discutido los beneficios e inconvenientes de mantener todo de 64 bits en todos los ámbitos y algunos de los efectos de “mezclando y combinando” Cómo el rendimiento de Windows se ve afectado por el hardware y el software Cómo el rendimiento de Windows se ve afectado por el hardware y el software En teoría, el software de 32 bits podría superar a su contraparte de 64 bits, según la configuración del hardware. ¿Suena complicado? Estamos aquí para darle sentido y ayudarlo a obtener el mejor rendimiento de su sistema. Lee mas . 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 Windows de 32 bits sin ayuda adicional. Simplemente son demasiado diferentes: desde los punteros y los tipos de datos, a 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 de manera efectiva 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 kernel de Windows de 64 bits y la versión de ntdll.dll de 32 bits (que contiene una lista de las funciones principales del kernel de Windows), interceptando las llamadas del kernel y modificándolas para que puedan ser procesadas por Las funciones nativas de 64 bits proporcionadas por el kernel de Windows..

Hay 3 archivos DLL utilizados 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 kernel, 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 procesador 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 homólogos de 64 bits y realiza la llamada al sistema de 64 bits. Al regresar de la llamada, convertirá los resultados de 64 bits de nuevo a 32 bits y los enviará nuevamente a la pila de llamadas del programa para que la persona que llama los use..

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

En segundo lugar, reduce el impacto en el rendimiento que tendría si se ejecutara 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 utilizan 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 pueden cargarse en un proceso de 32 bits antes de Windows 7. Windows 7 y posteriores 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 se han reescrito para comportarse de manera diferente bajo WOW64.

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

Ahora, puede sentirse tentado a ver el tamaño de los archivos, sumarlos 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 subsiguientes 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 qué está pasando, 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 parches.

Después de que se aplicaron los parches a ambos sistemas, deshabilité el archivo de intercambio en ambos para obtener una mejor imagen del uso de la memoria asegurándome de que la RAM no se pudiera enviar al disco. Una vez que se completó LibreOffice 5.0.3.2 fue instalado.

Una copia de Sysinternals Process Explorer Process Explorer: el reemplazo del Administrador de tareas más poderoso [Windows] Process Explorer: el reemplazo del Administrador de tareas más poderoso [Windows] Seamos honestos, el Administrador de tareas de Windows no es tan bueno para entender y administrar los procesos en ejecución en tu ordenador. Incluso en Windows 8, donde está muy mejorado, el administrador de tareas no puede acercarse a la ... Leer más 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 de la columna predeterminada se cambió para que pudiera ver el Conjunto de trabajo y el Uso privado de WS.

Estos números de conjunto de trabajo reflejan la cantidad de RAM que utilizan 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 para un proceso.

Los procesos que estamos examinando tampoco están solos. Los diversos programas de LibreOffice inician otro proceso, soffice.exe, que ejecutará otro proceso, soffice.bin. Necesitamos ver los totales de los tres procesos para ver el uso efectivo de memoria de cada programa.

Para la prueba inicial, simplemente abrí Writer, Calc e Impress de forma individual para ver cuánta memoria consumen sin que se carguen datos y se exportan los datos desde Process Explorer. Con Calc e Impress, abrí un archivo .xls de 3.7 MB y un archivo .pptx de 3.9 MB respectivamente y registré el nuevo uso de memoria. Los resultados se pueden ver en la siguiente tabla. Todos los datos están en KB.

La gran sorpresa ocurrió con Impress. Sin un documento, utilizaba un 4,1% más de RAM en el sistema de 64 bits y un 9,9% Menos con el documento cargado. Desenterré algunas otras presentaciones y obtuve resultados similares con todos ellos. 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 equivalentes de 32 bits cuando ejecutan 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.

Explorar más sobre: ​​64 bits, Memoria de computadora, Windows.