web-dev-qa-db-ja.com

32ビットマシンは4GBを超えるRAMをどのようにサポートしますか?

私はいつもこれについて疑問に思っていましたが、32ビットマシンが4 GBを超える [〜#〜] ram [〜#〜] をどのようにアドレス指定しているかを完全には理解していませんでした。つまり、アドレス行が残っていないということですよね?

私たちの施設でも、8GBのRAMマシンでアドレス指定可能で、32ビットバージョンの SQL Server )を備えたDellデータベースサーバーがあることを知っています。 EMS 20アドレス行8086のメモリ、回転メモリのウィンドウを使用しますか?

6
Brettski

4 GBを超えるメモリをサポートするために、Windowsは 物理アドレス拡張 (PAE)を使用します。ページングテーブルを使用して、4GBを超えるメモリをマッピングします。これを行うことにより、物理アドレスのサイズが36ビット(64 GB)に増加します。 PAEは64ビットOSでも使用されます。この場合、最大サイズは2倍の128GBになります。

この方法は、各プロセスが依然として最大4GBのメモリに制限されていることを意味します。

18
Sam Cogan

実際には、OSが4GBを超えるメモリを利用できるようにするPAEと呼ばれるIntelの機能があります。各アプリケーションは2(または3)GBのメモリスペースしか使用できませんが、OSのメモリが増えてデータを分散できるようになったため、プロセス間の共有が少なくなり、パフォーマンスが向上する可能性があります。

ただし、本当の魔法は、このために特別に作成された単一の32ビットアプリケーションで実際により多くのメモリを使用できるAWEAPIを使用するときに始まります。これはSQLServerが行っていることです。

3
Oskar Duveborn

それは [〜#〜] pae [〜#〜] と呼ばれます。最大64GBのRAMをサポートするようにプロセッサのページテーブルレイアウトを変更することで機能します。ただし、1つのアプリケーションで使用できるのは2〜3 GBのみです(カーネルの設定方法によって異なります。通常、Windowsの場合は2 GB、Linuxの場合は3 GBです)。また、PAEは、ページテーブルのルックアップに追加のレベルがあるため、マシンの実行がわずかに遅くなる傾向があります。

比較的最近のプロセッサでサポートされている必要があります。

2
Zifre

サーバーのオペレーティングシステムは64ビットの場合があります。 SQLは8ギガのうち4ギガしか使用しないか、32ビットプログラムの中には、RAMを利用するためにさらに多くのプロセス(私の経験ではビデオエンコーディングソフトウェアなど)を生成するものがあります。

1
Daniel A. White