39

OSについてのパデュー大学の講義でいくつかのメモを読むだけで、次のようになります。

プログラムは、メモリをアドレス0から2 ^ 32-1(0から4GB-1)までのバイト配列と見なします。

なぜ4GB?

4

13 に答える 13

65

32ビットは最大232− 1 = 4294967295 = 4 GiB − 1の数値を表すことができるため、最大232の個別バイトをアドレス指定します。これは4GiBになります。

ただし、これを回避する方法はいくつかあります。たとえば、PAEを使用すると、32ビットオペレーティングシステムでもより多くのメモリをサポートできます。ただし、これまではサーバーで最も一般的に使用されてきました。また、サーバー以外のWindowsSKUはそれをサポートしていません。ただし、64ビットCPU、OS、およびドライバーのサポートが一般的であることを考えると、今ではそれはすべて議論の余地があります。

于 2009-07-13T12:57:05.903 に答える
34

メモリの各バイトにはアドレスが必要だからです。32ビットオペレーティングシステムでは、アドレスは32ビット長です。したがって、2 ^ 32の可能なアドレスがあります。これは、2^32バイト=4GBであることを意味します。

于 2009-07-13T12:58:06.263 に答える
13

4 GB = 2^32バイト。

于 2009-07-13T12:57:24.783 に答える
9
2 ^ 32 = 4 * 1024 * 1024 * 1024

これは、バイト単位で4GBの定義です。言い換えると、メモリポインタとしての32ビットレジスタは、4GB以上のメモリをアドレス指定できません。

于 2009-07-13T12:57:30.320 に答える
6

実際には、2^32 = 4294967296 バイトほど単純ではありません。ページングが有効になっている x86 保護モード (つまり、最新の OS を使用したときに得られるもの) では、ページング変換メカニズムがクライアント アプリケーションに対して透過的であっても、メモリの場所を直接アドレス指定しません。

論理 32 ビット メモリ アドレスのうち、4K ページを使用する場合:

  • ビット 22 ~ 31 はページ ディレクトリを参照します。
  • ビット 12 ~ 21 はページ テーブルを参照します。
  • ビット 11 ~ 0 は、4096 バイト ページのオフセットを参照します。

ご覧のとおり、2^10 (1024) ページ ディレクトリがあり、各ページ ディレクトリには 2^10 ページ テーブルがあり、各ページの長さは 2^12 (4096) バイトであるため、2^32 = 4294967296 バイトです。メモリ バスの幅は CPU のワード長と同じであると便利ですが、必ずしもそうである必要はありません。実際、最新の x86 CPU は PAE をサポートしており、32 ビット モードでも 4GB (または GiB) を超えるアドレス指定が可能です。

于 2009-07-13T13:18:47.163 に答える
3
  1. 32ビットs は数値を表すことができます0..2^32=0..4,294,967,296
  2. 32ビットは最大2 ^32 バイトをアドレス指定できます(バイトサイズのブロックを想定)
  3. 2 ^32バイトが最大サイズです

2^32 B = 4,194,304 KiB = 4,194 MiB = 4 GiB

于 2019-05-19T04:59:49.783 に答える
2

これは、Wordに保存できるさまざまなメモリアドレス(バイト単位)の量だからです。

しかし、実際には、それは常に正しいとは限りません(ほとんどの場合、そうではありません)。OSはそれよりも多くの物理メモリを処理でき(PAEを使用)、アプリケーションは4GB未満の仮想メモリを使用できます(その仮想の一部であるため)メモリはOSにマップされます。たとえば、Linuxでは1GB、Windowsでは2GBです)。

それが当てはまらない別のシナリオは、メモリがバイトではなくワードによってアドレス指定された場合、たとえば、アドレス指定可能なメモリの合計は16GBになります。

于 2009-07-13T12:59:51.180 に答える
1

主に、32 ビット OS が 2^32-1 アドレスのみをサポートすることを選択したためです。

CPU の FSB に 32 を超えるアドレス行がある場合、32 ビット OS はページング メカニズムを使用して 4GiB を超えるアドレスにアクセスすることを選択できます。(たとえば、PAE をサポートする Intel/AMD チップ上の Windows 2000 Advanced Server/Data Center エディション)

于 2009-07-13T13:33:43.090 に答える
0

4 GB = 2^32バイト。ただし、32ビットOSによって割り当てられた最大4GBを覚えておいてください。実際には、OSはVRAMの割り当て後などに表示されなくなります。

于 2009-07-13T13:00:14.097 に答える
0

以前に他のユーザーが述べたように、32 ビット Windows OS は 32 ビット ワードを使用してメモリ アドレスを格納します。

実際、最近のほとんどの 32 ビットチップは、Intel の Physical Address Extension (PAE) モデルを使用した 36 ビット アドレッシングを使用しています。一部のオペレーティング システムは、これを直接サポートしています (Linux など)。

Raymond Chen が指摘しているように、Windows では32 ビット アプリケーションは 4GB を超えるメモリを割り当てることができ、それを行うために 64 ビット Windows は必要ありません。またはPAE。

さらに言えば、64 ビット チップは 64 ビット メモリ空間全体をサポートしていません。現在、それらは 42 ビット空間に制限されていると思います... PAE が使用する 36 ビット空間と上位 8 ビット アドレス、

于 2009-07-13T15:25:20.297 に答える