web-dev-qa-db-ja.com

64ビットバージョンのWindowsが32ビットバージョンよりも大きいのはなぜですか?

64ビットバージョンと32バージョンの Windows 8 Consumer Preview ISOイメージ のサイズの違いは、800Mbまたは24%の違い。

これほど大きな違いは見たことがありません。

なぜそんなに大きな違いがあるのですか?

57
wizlog

サイズの不一致にはいくつかの理由があります。

  1. 64ビットWindowsには、32ビットソフトウェアの実行を可能にする変換レイヤー(Windows 64ビット上のWindows 32ビット、または " WoW64 ")が含まれています。
  2. 64ビットWindowsには、32ビットバージョンのさまざまなプログラム(Internet Explorer)とライブラリ(WinSxSフォルダー内)も含まれています。コメントで述べたように、これがサイズの違いの最も重要な理由です。
  3. 64ビットのメモリアドレスは32ビットのメモリアドレスの2倍の長さなので、64ビットのポインタも2倍の長さです。ポインターを多用する64ビットプログラムは、32ビットプログラムよりも著しく大きくなります。

最初と最後の理由は、64ビットWindowsに同梱されている32ビットソフトウェアほど貢献していませんが、完全を期すため、/すべき

78
rob

64ビットバージョンでは、Microsoftは追加のソフトウェアを展開します。たとえば、Internet Explorerには2つのバージョン(64ビットと32ビット)があります。別の例は Win32-applications のランタイムシステム全体です。
また、バイナリコードは bigger を取得します。これらの合計がおそらく大きな違いを生むでしょう。

11
HCL

いくつかの理由により、64ビットバージョンは通常32ビットバージョンよりも大きくなります。

最初に考慮すべきことは、コンパイラーのタイプとソフトウェアが実行されるランタイム環境です。ソフトウェアがネイティブコードを生成し、ランタイム環境なしで実行されるコンパイラーで構築されている場合、生成されたコードサイズに小さな違いが見られる可能性があります。これは、CISCプロセッサーのより大きな命令セットに関連しています。

2つ目は、.NETなどのランタイム環境で実行するようにソフトウェアをコンパイルした場合、コンパイラーが同じ(中間)コードを生成するため、サイズの違いはありません。

最後に、64ビットバージョンのWindowsには、完全な64ビットバージョンといくつかの32ビットバージョンの対応物が含まれています。一部のソフトウェアは32ビットであり、Windows 64ビットで変更せずに実行する必要があるため、これは必須です。

2
Chris Mylonas