64ビットプロセスが使用できる最大メモリはいくらですか?

64ビットプロセスが使用できる最大メモリはいくらですか?

私はハードウェア容量が2 ^ 48ビットであることを知っていますが、カーネルには一般的にアプリケーションメモリの制約に関する基本的な制限はほとんどありませんが、アプリケーションが使用できるメモリの上限があり、通常2に加えて消費する量があります。ありますか? ^48、DIMMスロットで使用できるチャネル数ですか?

参考までに、Redmondはほとんどのサーバー製品で製品を最大2TBに制限します。

ベストアンサー1

定義によると(少なくとも一般的な定義によると)、64ビットプロセスは2 64バイトのメモリしか表示できません。実際、ほとんどのオペレーティングシステムは、カーネルがカーネルメモリ、プロセスメモリ、またはデバイスメモリへのポインタになる可能性がある64個の値を操作できるように、各プロセスを使用可能なアドレススペースよりわずかに小さく制限します。 4EBまたは8EBの制限が一般的です。

それまでは、アーキテクチャによる制限が発生する可能性があります。特に、プロセスのメモリマップはマシンのメモリマップと一致する必要があります。メモリ管理ユニット、ハードウェアには必要なビット数だけがある場合が多いです。 MMUには最大4つのレベルのページテーブルがあり、Linux(特に)は4つのレベルをすべてサポートできます。想像前診断(ページグローバルディレクトリ)リストPUD(ページ上位ディレクトリ)リストPMD(ページ中間ディレクトリ)リストPTE(ページテーブルエントリ)。各間接レベルはほとんどのポインタを逆参照するための追加のステップなので、システムのページサイズは通常4kB(2,1242アドレス可能バイトですが)、ほとんどの64ビットアーキテクチャはより大きなページテーブルで構成できるため、一般的な内容提供するのは難しいです。

プロセス固有のアドレス制限は、コンピュータに保持できる物理メモリの量とは関係ありません。たとえば、PCのDIMMスロットで使用できるチャネル数は、そのPCに保持できるRAM容量の理論的な制限です(通常、CPUのメモリバス幅は制限要因です)。プロセスが消費できるメモリまたはアドレス空間の量とは関係ありません(メモリはプロセスの複数のノード間で交換または共有できます)。マルチプロセッサマシン)。

おすすめ記事