Por que a versão de 64 bits do Windows é maior que a versão de 32 bits?

56

A diferença de tamanho das imagens ISO do Windows 8 Consumer Preview , entre as versões de 64 bits e as 32, é de 800 Mb ou uma diferença de 24% .

Eu nunca vi uma diferença tão grande.

Por que existe uma diferença tão grande?

wizlog
fonte

Respostas:

77

Existem várias razões para a discrepância de tamanho:

  1. O Windows de 64 bits contém uma camada de conversão (Windows de 32 bits no Windows de 64 bits ou " WoW64 ") que permite executar o software de 32 bits.
  2. O Windows de 64 bits também contém versões de 32 bits de vários programas (Internet Explorer) e bibliotecas (na pasta WinSxS). Conforme observado nos comentários, esse é o motivo mais significativo para a diferença de tamanho.
  3. Os endereços de memória de 64 bits têm o dobro do que os endereços de memória de 32 bits; portanto, os ponteiros de 64 bits também têm o dobro. Os programas de 64 bits que fazem uso pesado de ponteiros serão visivelmente maiores que os de 32 bits.

O primeiro e o último motivo não contribuem quase tanto quanto o software de 32 bits que acompanha o Windows de 64 bits - mas, para fins de completude, eles devem ser considerados.

roubar
fonte
4
seu principal ponto 1: a sxspasta dentro do .iso é 177m para 32 bits, 315m para 64 bits. a windowspasta dentro do install.wimiso é 7.9g para 32 bits, 11.9g para 64 bits. e dentro dessa pasta, temos novamente WinSxS3,9 g para 32 bits e 6,9 ​​g para 64 bits. o material lado a lado é o maior pedaço de dados aqui e existe para aplicativos de 32 bits e 64 bits na versão de 64 bits do Windows. ter binários maiores e algumas versões duplas de aplicativos quase não tem impacto no tamanho dos isos.
akira
26
Não vejo como o ponto 3 afetaria o tamanho da imagem. Muito poucos valores de ponteiro são codificados no código-fonte. Somente esses ocupariam espaço no binário do software (em vez da imagem de RAM depois que o software é executado).
Konrad Rudolph
10
Para (1), todas as DLLs do Wow64 ocupam menos de 1 MB na minha instalação do Win7 Pro. Para (3), @KonradRudolph está correto. Não há uma verdadeira razão para o inchaço de código intrínseco passar de 32 para 64 bits - alguns códigos de opção foram alterados, embora a maioria ainda tenha apenas 32 bits de largura (x86 é uma arquitetura de instruções de comprimento variável). A maioria dessa discrepância decorre de (2).
Breakthrough
3
@akira A sxspasta tem a ver com (2), não (1). Os assemblies lado a lado não fazem parte do WoW64, embora as DLLs de 32 bits sejam executadas no WoW64. No entanto, a pasta WinSxS existe para fornecer binários de 32 e 64 bits para programas que exigem a respectiva DLL - essencialmente com uma versão de 32 e 64 bits da DLL.
Breakthrough
3
@CrisStringfellow: ninguém duvidou disso. mas o efeito no tamanho geral das imagens iso é quase nulo. o principal pedaço do aumento de tamanho é causado pela entrega de coisas de 64 bits e 32 bits (alguns aplicativos, muitas dlls [encontradas principalmente na WinSxSpasta no .iso]).
Akira #
11

Nas versões de 64 bits, a Microsoft implanta software adicional. Por exemplo, existem duas versões do Internet Explorer (64 e 32 bits). Outro exemplo é o sistema de tempo de execução completo para aplicativos Win32 .
Além disso, o código binário ficará maior . Provavelmente a soma disso faz a grande diferença.

HCL
fonte
2

As versões de 64 bits geralmente são maiores que a versão de 32 bits por alguns motivos.

A primeira coisa a considerar é o tipo de compilador e o ambiente de tempo de execução em que o software é executado. Se o software for construído com um compilador que produz código nativo e é executado sem um ambiente de tempo de execução, é possível ver pequenas diferenças no tamanho do código gerado, o que está relacionado a um conjunto maior de instruções nos processadores CISC.

Segundo, se o software for compilado para ser executado em um ambiente de tempo de execução, como o .NET, você não verá diferenças de tamanho, pois o compilador gera o mesmo código (intermediário).

Por fim, a versão de 64 bits do Windows contém a versão completa de 64 bits com algumas das contrapartes da versão de 32 bits. Isso é necessário, pois alguns softwares são de 32 bits e precisam ser executados sem modificações no Windows de 64 bits.

Chris Mylonas
fonte