Pourquoi la version 64 bits de Windows est-elle plus grosse que la version 32 bits?

Réponses:

77

La différence de taille a plusieurs raisons:

  1. Windows 64 bits contient une couche de traduction (Windows 32 bits sous Windows 64 bits ou " WoW64 ") qui lui permet d’exécuter un logiciel 32 bits.
  2. Windows 64 bits contient également des versions 32 bits de divers programmes (Internet Explorer) et de bibliothèques (dans le dossier WinSxS). Comme indiqué dans les commentaires, c’est la principale raison de la différence de taille.
  3. Les adresses mémoire 64 bits sont deux fois plus longues que les adresses mémoire 32 bits; les pointeurs 64 bits sont donc deux fois plus longs. Les programmes 64 bits qui utilisent beaucoup de pointeurs seront nettement plus volumineux que leurs homologues 32 bits.

Les premières et dernières raisons ne contribuent pas autant que le logiciel 32 bits fourni avec Windows 64 bits - mais, par souci d'exhaustivité, elles doivent être prises en compte.

Rob
la source
4
principalement le point 1: le sxsdossier à l’intérieur du .iso fait 177 m pour 32 bits, 315 m pour 64 bits. le windowsdossier à l' install.wimintérieur de l'iso est de 7,9 g pour 32 bits, 11,9 g pour 64 bits. et dans ce dossier, nous avons à nouveau WinSxS3,9 g pour 32 bits et 6,9 g pour 64 bits. Le contenu côte à côte est la plus grande quantité de données ici et il est là pour les applications 32 bits et 64 bits dans la version 64 bits de Windows. avoir des binaires plus gros et des versions doubles d'applications n'a presque pas d'impact sur la taille de l'isos.
Akira
26
Je ne vois pas quelle incidence le point 3 aurait sur la taille de l'image. Très peu de valeurs de pointeur sont codées en dur dans le code source. Seuls ceux-ci occuperaient de l'espace dans le logiciel binaire (plutôt que l'image RAM une fois le logiciel exécuté).
Konrad Rudolph
10
Pour (1), tous les fichiers Wow64 .DLL occupent moins de 1 Mo sur mon installation Win7 Pro. Pour (3), @KonradRudolph est correct. Il n'y a pas de vraie raison pour que le code intrinsèque passe de 32 à 64 bits - quelques opcodes ont été modifiés, même si la plupart n'ont qu'une largeur de 32 bits (x86 est une architecture d'instruction de longueur variable). La majorité de cet écart provient de (2).
Percée
3
@akira Le sxsdossier a à voir avec (2), pas (1). Les assemblages côte à côte ne font pas partie de WoW64, bien que les DLL 32 bits soient exécutés sous WoW64. Cependant, le dossier WinSxS est là pour fournir des fichiers binaires 32 bits et 64 bits pour les programmes nécessitant la DLL respective - ayant essentiellement une version 32 bits et une version 64 bits de la DLL.
Percée
3
@CrisStringfellow: personne n'en doutait. mais l' effet sur la taille globale des images iso est presque nul. la principale augmentation de la taille est due à la fourniture de données 64 bits ET 32 bits (certaines applications, beaucoup de dlls [trouvées principalement dans le WinSxSdossier du fichier .iso]).
Akira
11

Dans les versions 64 bits, Microsoft déploie des logiciels supplémentaires. Par exemple, il existe deux versions d'Internet Explorer (64 et 32 ​​bits). Un autre exemple est l'ensemble du système d'exécution pour les applications Win32 .
En outre, le code binaire deviendra plus gros . Probablement la somme de ceci fait la grande différence.

HCL
la source
2

Les versions 64 bits sont généralement plus volumineuses que la version 32 bits pour plusieurs raisons.

La première chose à considérer est le type de compilateur et l'environnement d'exécution où le logiciel s'exécute. Si le logiciel est construit avec un compilateur qui produit du code natif et s'exécute sans environnement d'exécution, il est possible de voir de petites différences dans la taille du code généré, qui est liée à un jeu d'instructions plus important dans les processeurs CISC.

Deuxièmement, si le logiciel est compilé pour s'exécuter sous un environnement d'exécution, tel que .NET, vous ne verrez aucune différence de taille, car le compilateur génère le même code (intermédiaire).

Enfin, la version 64 bits de Windows contient la version 64 bits complète avec certaines versions équivalentes de la version 32 bits. Cela est nécessaire car certains logiciels sont en 32 bits et doivent s'exécuter sans modification dans Windows 64 bits.

Chris Mylonas
la source