¿Por qué la versión de Windows de 64 bits es más grande que la versión de 32 bits?

Respuestas:

77

Hay varias razones para la discrepancia de tamaño:

  1. Windows de 64 bits contiene una capa de traducción (Windows de 32 bits en Windows de 64 bits o " WoW64 ") que le permite ejecutar software de 32 bits.
  2. Windows de 64 bits también contiene versiones de 32 bits de varios programas (Internet Explorer) y bibliotecas (en la carpeta WinSxS). Como se señaló en los comentarios, esta es la razón más importante para la diferencia de tamaño.
  3. Las direcciones de memoria de 64 bits son dos veces más largas que las direcciones de memoria de 32 bits, por lo que los punteros de 64 bits también son dos veces más largos. Los programas de 64 bits que hacen un uso intensivo de los punteros serán notablemente más grandes que sus contrapartes de 32 bits.

La primera y la última razón no contribuyen tanto como el software de 32 bits que se entrega con Windows de 64 bits, pero en aras de la exhaustividad, deben considerarse.

robar
fuente
44
es principalmente el punto 1: la sxscarpeta dentro del .iso tiene 177 m para 32 bits, 315 m para 64 bits. la windowscarpeta dentro de la install.wimiso es de 7.9 g para 32 bits, 11.9 g para 64 bits. y dentro de esa carpeta tenemos otra vez WinSxSque es 3.9g para 32bit y 6.9g para 64bit. el lado a lado es la mayor parte de los datos aquí y está allí para las aplicaciones de 32 bits y 64 bits en la versión de Windows de 64 bits. tener binarios más grandes y algunas versiones dobles de aplicaciones casi no tiene impacto en el tamaño de los isos.
akira
26
No veo cómo el punto 3 afectaría el tamaño de la imagen. Muy pocos valores de puntero están codificados en el código fuente. Solo aquellos ocuparían espacio en el binario del software (en lugar de la imagen RAM una vez que se ejecute el software).
Konrad Rudolph el
10
Para (1), todos los Wow64 .DLL ocupan menos de 1 MB en mi instalación de Win7 Pro. Para (3), @KonradRudolph es correcto. No hay una verdadera razón para que la expansión del código intrínseco pase de 32 a 64 bits: se modificaron algunos códigos de operación, aunque la mayoría todavía tienen solo 32 bits de ancho (x86 es una arquitectura de instrucciones de longitud variable). La mayoría de esta discrepancia surge de (2).
Avance
3
@akira La sxscarpeta tiene que ver con (2), no con (1). Los ensamblados uno al lado del otro no son parte de WoW64, aunque las DLL de 32 bits se ejecutan bajo WoW64. Sin embargo, la carpeta WinSxS está allí para proporcionar binarios de 32 bits y 64 bits para programas que requieren la DLL respectiva, esencialmente con una versión de la DLL de 32 bits y 64 bits.
Avance
3
@CrisStringfellow: nadie lo dudaba. pero el efecto sobre el tamaño general de las imágenes iso es casi nulo. La parte principal del aumento de tamaño es causada por la entrega de material de 64 bits y 32 bits (algunas aplicaciones, muchos dlls [se encuentran principalmente dentro de la WinSxScarpeta en el .iso]).
akira
11

En versiones de 64 bits, Microsoft implementa software adicional. Por ejemplo, hay dos versiones de Internet Explorer (64 y 32 bits). Otro ejemplo es todo el sistema de tiempo de ejecución para aplicaciones Win32 .
Además, el código binario se hará más grande . Probablemente la suma de esto hace la gran diferencia.

HCL
fuente
2

Las versiones de 64 bits son generalmente más grandes que las de 32 bits por un par de razones.

Lo primero a considerar es el tipo de compilador y el entorno de tiempo de ejecución donde se ejecuta el software. Si el software está construido con un compilador que produce código nativo y se ejecuta sin un entorno de tiempo de ejecución, es posible ver pequeñas diferencias en el tamaño del código generado, que está relacionado con un conjunto de instrucciones más grande en los procesadores CISC.

En segundo lugar, si el software se compila para ejecutarse en un entorno de tiempo de ejecución, como .NET, no verá ninguna diferencia de tamaño, ya que el compilador genera el mismo código (intermedio).

Finalmente, la versión de Windows de 64 bits contiene la versión completa de 64 bits con algunas de las contrapartes de la versión de 32 bits. Esto es necesario ya que algunos programas son de 32 bits y deben ejecutarse sin modificaciones en Windows de 64 bits.

Chris Mylonas
fuente