Чому 64-розрядна версія Windows більше, ніж 32-розрядна версія?


Відповіді:


77

Існує кілька причин невідповідності розміру:

  1. 64-розрядний Windows містить шар перекладу (Windows 32-біт на Windows 64-біт, або " WoW64 "), що дозволяє запускати 32-розрядне програмне забезпечення.
  2. 64-розрядна Windows також містить 32-розрядні версії різних програм (Internet Explorer) і бібліотек (у папці WinSxS). Як зазначено в коментарях, це найважливіша причина для різниці розмірів.
  3. 64-бітні адреси пам'яті вдвічі перевищують 32-бітні адреси пам'яті, тому 64-розрядні покажчики також вдвічі довші. 64-розрядні програми, які інтенсивно використовують покажчики, будуть помітно більшими, ніж їх 32-розрядні аналоги.

Перша і остання причини не сприяють майже такому ж рівню, як 32-бітне програмне забезпечення, що поставляється з 64-розрядною Windows, - але для повноти вони слід розглядати.


4
його головним чином через точку 1: sxs папка всередині .iso - 177m для 32bit, 315m для 64bit. windows в папці install.wim всередині iso 7,9g для 32bit, 11.9g для 64bit. і всередині цієї папки ми знову WinSxS що становить 3.9g для 32bit і 6.9g для 64bit. Поряд з речами є найбільшим фрагментом даних тут, і він існує як для 32-бітних, так і для 64-бітних програм у 64-бітній версії Windows. наявність більших двійкових файлів і деяких подвійних версій програм практично не впливає на розмір isos.
akira

26
Я не бачу, як точка 3 вплине на розмір зображення. Дуже мало значень покажчиків жорстко закодовані у вихідний код. Тільки ті, хто займе місце у програмному бінарі (а не RAM-зображення після запуску програмного забезпечення).
Konrad Rudolph

10
Для (1) всі Wow64 .DLL займають менше 1 Мб на моїй установці Win7 Pro. Для (3), @KonradRudolph є правильним. Існує ніякої істинної причини для внутрішнього розмивання коду від переміщення з 32 до 64-бітових - кілька кодів операцій змінилося, хоча більшість з них все ще тільки 32-бітної ширини (x86 - це архітектура з змінною довжиною). Більшість цих розбіжностей випливає з (2).
Breakthrough

3
@akira The sxs папка має відношення до (2), а не до (1). Порядкові збірки не є частиною WoW64, хоча 32-бітні DLL виконуються під WoW64. Проте папка WinSxS існує забезпечують 32-бітні і 64-розрядні двійкові програми для програм які вимагають відповідних DLL - по суті мають як 32-бітну, так і 64-розрядну версію DLL.
Breakthrough

3
@CrisStringfellow: ніхто не сумнівався в цьому. але ефекту на загальний розмір iso зображень майже нульовий. головний фрагмент збільшення розміру викликаний доставкою 64-бітної та 32-бітної інформації (деякі програми, багато бібліотек [більшість знайдено всередині WinSxS в папці .iso]).
akira

11

У 64-бітних версіях Microsoft розгортає додаткове програмне забезпечення. Наприклад, існує дві версії Internet Explorer (64 і 32 біт). Іншим прикладом є ціла система виконання Win32-додатки .
Також отримає двійковий код більше . Ймовірно, сума цього це робить велику різницю.


2

64-розрядні версії, як правило, більше, ніж 32-розрядна версія для декількох причин.

Перше, що потрібно розглянути, - тип компілятора і середовище виконання, в якому виконується програмне забезпечення. Якщо програмне забезпечення побудовано з компілятором, який виробляє рідний код і виконується без середовища виконання, можна побачити невеликі відмінності в генерованому розмірі коду, який пов'язаний з більшим набором команд в процесорах CISC.

По-друге, якщо програмне забезпечення компілюється для виконання в середовищі виконання, наприклад .NET, ви не побачите жодних відмінностей у розмірах, оскільки компілятор генерує той же (проміжний) код.

Нарешті, 64-розрядна версія Windows містить повну 64-бітну версію з деякими аналогами з 32-бітною версією. Це потрібно, оскільки деяке програмне забезпечення є 32-бітним і потребує виконання без змін у Windows 64-bit.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.