2009-05-28 14 views
1

AMD64ベースのハードウェアで32ビットRHEL 4.4を使用しています。ここで私は、メモリの8Gigsは、OSが、私は私のシステムがフル8GBのメモリを利用することができませんことを前提としています32ビットであること、このシステムにインストールされているのuname -a32ビットRHELマシンでのメモリ使用

$ uname -a 
Linux zulu 2.6.9-42.0.10.ELsmp #1 SMP Fri Feb 16 17:17:21 EST 2007 i686 athlon i386 GNU/Linux 

から出力されます。私はトップを実行したときしかし、私は、以下を参照してください -

Mem: 8309168k total, 8292028k used, 17140k free,  7096k buffers 

ので、トップは、メモリのすべての8ギガバイトを閲覧することができます。

同じマシンに32ビットのWinXPをインストールすると、タスクマネージャーは利用可能なものとして3 GBを表示します。

私の質問です - どのように32ビットのOSは8GBのメモリを見ることができますか?これは、私のアプリケーションがより大きなアドレス空間を使用できることを意味しますか? 32ビットLinuxと32ビットWinXPの違いは何ですか?

ありがとうございます!

答えて

1

これを可能にする方法は、「PAE」(物理アドレス拡張)と呼ばれます。あなたのCPUは内部的に36ビットアドレスを使用することができ、あなたのOSはそれをサポートしています。残念ながら、Windows XPはNXビットをサポートするためにのみPAEを使用します(eXecutionビットなし、プロセッサがこのビットでマークされたページからコードを実行しようとすると例外が発生します)。 32ビットLinuxカーネルはPAEをサポートしています。

2

異なるレベルのメモリがあります。 OSが何であれ、1つのプロセスで4Gb以上に対処することは不可能ですが、それ以上のポインタは小さすぎます - それは32ビットのメモリの基本的な制限です。 LinuxやWindows、そして私が推測するほとんどの '伝統的な' OSでは、32ビットの仮想アドレス空間はカーネルのための1つの部分とプロセスのための1つの部分に分かれているので、プロセスごとに4Gb未満のアドレス指定可能な内容が得られます。

しかし、OSは、2Gbのメモリを消費する2〜3つのプロセスを持つなど、4Gbを超えるメモリを使用する可能性があります。 32ビットCPUでも(ハードウェアレベルで)4Gb以上のメモリを扱うことができますが、仮想アドレス空間では常に32ビットのポインタによって制限されます。

古い新しいものは、物理アドレス空間、仮想アドレス空間と共同の違いの良い説明があります。http://blogs.msdn.com/oldnewthing/archive/2004/08/18/216492.aspx

+0

実際には一般的には適切な回答ですが、1つの32ビットプロセスで4 GiB以上に対処するために実際にできることがあるため、これは少し誤解を招くものです。たとえば、Windowsの場合:「AWE(Address Windowing Extensions)は、32ビットのソフトウェアアプリケーションが仮想アドレス空間よりも多くの物理メモリにアクセスできるようにするMicrosoft Windowsアプリケーションプログラミングインターフェイスであり、4 GBの制限を超えています。 1]」http://en.wikipedia.org/wiki/Address_Windowing_Extensions –

1

新しいのi386互換CPUがPAEモードを使用して、4 GB以上に対処することができます。 Windows XPでは、アドレス空間を4GBに人工的に制限しています。これは、すべてのDMAが4GB未満のメモリに対して実行されると想定しているハードウェアドライバがあまりにも多く書き込まれているためです。したがって、4 GBのアドレス空間のうち約1 GBがハードウェアにマップされ、残りは物理RAMにマップされます。 Windowsサーバーのエディションにはこの制限はありません。 PAEをサポートするLinuxカーネルはメモリを制限しません。私が正しく覚えていれば、これらの両方が最大32GBをサポートします。

OSのオプションによっては、アプリケーションが2〜3 GBのアドレス空間に限定されています。 1つのアプリケーションでは、アドレス・ウィンドウ拡張、またはメモリー・マップ・ファイルを使用して、そのアドレス・スペースに出入りするメモリーの一部をウィンドウすることによって、より多くの物理RAMを効果的に使用できます。

+0

PAEから2^36バイトに制限が増えます。したがって64 GiBになります。 :) –

関連する問題