Linux仮想メモリサイズ

Linux仮想メモリサイズ

Linuxでユーザーとカーネル仮想メモリのサイズを決定する基準は何ですか? (該当する場合は32ビット)設定可能ですか?

512MB RAMがある場合、ユーザーとカーネルの仮想アドレスのサイズは何ですか?

ベストアンサー1

使用可能なアドレス空間は、アーキテクチャによって異なります。 1つの制限は、アーキテクチャ自体が提供する利用可能なアドレス空間の量です。 64ビットアーキテクチャは通常64ビットポインタを受け入れ、32ビットアーキテクチャは32ビットポインタを受け入れます。アドレス指定可能なスペースの量は、これらの制限を超えるアーキテクチャによって制限される可能性があり、アーキテクチャは特定の構造を課すことがあります。最も重要なことは、カーネルが独自の決定を適用し、そのいくつかは設定可能であるということです。

32ビットx86では5つの設定可能です:

  • デフォルトでは、ユーザースペースに3GiB、カーネルに1GiBを割り当て、ほぼ1GiBの「低」物理メモリを許可します(0xC0000000で分割)。
  • 3G / 1Gスプリットバリアントはスプリットを下に移動して、1GiB全体の低メモリを可能にします。分割は0xB000000にあります。
  • 2G / 2G分割は、2GiBをユーザースペースに割り当て、2GiBをカーネルに割り当て、3G / 1G分割(0x8000000または0x7800000から分割)の2つのバリエーションがあります。
  • 1G / 3G分割は、1GiBをユーザースペースに割り当て、3GiBをカーネルに割り当てます。分割は0x4000000にあります。

RAMが512MiBのシステムでは、デフォルトの3G / 1Gパーティションを使用する必要があります。ユーザー空間には3GiBのアドレス空間があり、カーネルには1GiBがあります。

64ビットx86では2つの異なる設定が可能です、ユーザー空間、カーネルに128TiBまたは64PiBアドレス空間を提供します。

他のアーキテクチャには異なる設定があります。

おすすめ記事