64ビットカーネルの32ビットアプリケーションはすべてのメモリを使用できますか?

64ビットカーネルの32ビットアプリケーションはすべてのメモリを使用できますか?

32ビットカーネルは、PAEを使用してPAEを持つアプリケーションにより多くのRAM(最大64GB)を割り当てることができることを知っているので、32ビットカーネルで32ビットアプリケーションを実行すると、1つのコアアプリケーションで24GBをすべて使用できます。できると思いました( - 私のOSはofcを使用しています)。

しかし、64ビットカーネルを使用している場合はどうなりますか? 32ビット(multi-lib)アプリケーションも私のメモリをすべて使用できますか?それとも、再び4GBに制限されますか?

ベストアンサー1

32ビットプロセスは約3GBにのみアクセスできます。 (カーネルのコンパイルオプションによっては少ない場合があります。)カーネルが32ビットか64ビットかは重要ではなく、64ビットアプリケーション実行機能にのみ影響します。 PAEは、各プロセスで見られる仮想メモリのサイズを変更することなく、より多くの物理メモリを許可する方法です。これが「32ビット」が意味するところです。ポインタは32ビットを使用しているため、可能な仮想アドレスは2から32しかないため、各プロセスは最大2 32 B = 4 GBにアクセスできます。 Linuxは、システムコール中にカーネルが使用できるように1GBを予約し、3GBを残します。

アプリケーションが複数のプロセスを実行している場合は、より多くのメモリを使用できます。

おすすめ記事