64ビットx86 Linuxシステムでは、アプリケーションはどのくらいのRAMを割り当てることができますか?

64ビットx86 Linuxシステムでは、アプリケーションはどのくらいのRAMを割り当てることができますか?

32ビットx86 PAE Linuxカーネルを使用すると、システムに使用可能なメモリがGiB以上ある場合でも、単一のアプリケーションは2GiB以上を割り当てることができません。これは本当ですか? 64ビットx86 Linuxカーネルはこの制限を軽減しますか?

ベストアンサー1

32ビットプロセスには32ビットアドレス空間があり、定義によると、「32ビット」はプロセスのメモリアドレスが32ビット幅であることを意味し、異なるアドレスが2 32の場合は最大2 32です。バイト(4GB)を処理できます。 32ビットLinuxカーネルは32ビットプロセスのみを実行できます。カーネルのコンパイルオプションによっては、各プロセスに1 GB、2 GB、または3 GBのメモリしか割り当てられません(残りはシステムコールを処理するときにカーネル用に予約されています)。これは、RAM、スワップ、およびマップされたファイル間の分類に関係ない仮想メモリの量です。

64ビットカーネルは、64ビットプロセスだけでなく32ビットプロセスも実行できます。原則として、64ビットプロセスは最大2つの64バイト(16EB)をアドレス指定できます。優秀x86_64 アーキテクチャ、部分的にx86_64のデザインのためメモリ管理ユニット現在のプロセスあたりのアドレス空間は128TBに制限されています。

おすすめ記事