Dlaczego 64-bitowa wersja systemu Windows jest większa niż wersja 32-bitowa?

Odpowiedzi:

77

Istnieje kilka przyczyn rozbieżności wielkości:

  1. 64-bitowy system Windows zawiera warstwę tłumaczenia (Windows 32-bitowy w systemie Windows 64-bit lub „ WoW64 ”), który pozwala mu uruchamiać oprogramowanie 32-bitowe.
  2. 64-bitowy system Windows zawiera również 32-bitowe wersje różnych programów (Internet Explorer) i bibliotek (w folderze WinSxS). Jak zauważono w komentarzach, jest to najważniejszy powód różnicy wielkości.
  3. 64-bitowe adresy pamięci są dwa razy dłuższe niż 32-bitowe adresy pamięci, więc 64-bitowe wskaźniki również są dwa razy dłuższe. 64-bitowe programy, które intensywnie wykorzystują wskaźniki, będą zauważalnie większe niż ich 32-bitowe odpowiedniki.

Pierwszy i ostatni powód nie wnoszą prawie tyle samo, co 32-bitowe oprogramowanie dostarczane z 64-bitowym systemem Windows - ale dla zachowania kompletności należy je rozważyć.

obrabować
źródło
4
jest to głównie punkt 1: sxsfolder wewnątrz .iso wynosi 177 m dla wersji 32-bitowej i 315 m dla wersji 64-bitowej. windowsfolderu wewnątrz install.wimwewnątrz ISO to 7,9 g do 32-bitowego, 11,9 g na 64-bitowych. a w tym folderze znów WinSxSmamy 3,9 g dla wersji 32-bitowej i 6,9 g dla wersji 64-bitowej. side-by-side to największy kawałek danych tutaj i jest dostępny zarówno dla aplikacji 32-bitowych, jak i 64-bitowych w 64-bitowej wersji systemu Windows. posiadanie większych plików binarnych i niektórych podwójnych wersji aplikacji prawie nie ma wpływu na rozmiar isos.
akira
26
Nie widzę wpływu punktu 3 na rozmiar obrazu. Bardzo niewiele wartości wskaźników jest zakodowanych na stałe w kodzie źródłowym. Tylko te zajmowałyby miejsce w pliku binarnym oprogramowania (zamiast obrazu pamięci RAM po uruchomieniu oprogramowania).
Konrad Rudolph
10
W przypadku (1) wszystkie pliki Wow64 .DLL zajmują mniej niż 1 MB podczas instalacji Win7 Pro. Dla (3) @KonradRudolph jest poprawny. Nie ma prawdziwego powodu, aby wewnętrzny rozdęty kod zmienił się z 32 na 64-bitowy - zmieniono kilka kodów, chociaż większość z nich ma tylko 32-bitową szerokość (x86 to architektura instrukcji o zmiennej długości). Większość tej rozbieżności wynika z (2).
Przełom
3
@akira sxsFolder ma związek z (2), a nie (1). Zespoły side-by-side nie są częścią WoW64, chociaż 32-bitowe biblioteki DLL są wykonywane pod WoW64. Jednak folder WinSxS zapewnia 32-bitowe i 64-bitowe pliki binarne dla programów, które wymagają odpowiedniej biblioteki DLL - zasadniczo posiadającej zarówno 32-bitową, jak i 64-bitową wersję biblioteki DLL.
Przełom
3
@CrisStringfellow: nikt w to nie wątpił. ale wpływ na ogólny rozmiar obrazów ISO jest prawie zerowy. główna część wzrostu rozmiaru jest spowodowana dostarczaniem rzeczy 64-bitowych ORAZ 32-bitowych (niektóre aplikacje, wiele bibliotek dll [głównie w WinSxSfolderze w .iso]).
akira
11

W wersjach 64-bitowych Microsoft wdraża dodatkowe oprogramowanie. Na przykład istnieją dwie wersje Internet Explorera (64 i 32-bitowe). Innym przykładem jest cały system wykonawczy dla aplikacji Win32 .
Ponadto kod binarny będzie większy . Prawdopodobnie ich suma robi dużą różnicę.

HCL
źródło
2

Wersje 64-bitowe są generalnie większe niż wersja 32-bitowa z kilku powodów.

Pierwszą rzeczą do rozważenia jest typ kompilatora i środowisko wykonawcze, w którym wykonuje się oprogramowanie. Jeśli oprogramowanie jest zbudowane z kompilatora, który generuje kod macierzysty i działa bez środowiska wykonawczego, można zauważyć niewielkie różnice w generowanym rozmiarze kodu, co jest związane z większym zestawem instrukcji w procesorach CISC.

Po drugie, jeśli oprogramowanie jest skompilowane do działania w środowisku wykonawczym, takim jak .NET, nie zobaczysz żadnych różnic wielkości, ponieważ kompilator generuje ten sam (pośredni) kod.

Wreszcie 64-bitowa wersja systemu Windows zawiera pełną wersję 64-bitową z niektórymi odpowiednikami wersji 32-bitowej. Jest to wymagane, ponieważ niektóre programy są 32-bitowe i muszą działać bez modyfikacji w 64-bitowym systemie Windows.

Chris Mylonas
źródło