カーネル空間とユーザー空間のアドレス範囲を常に 1:3 の比率で分割するかどうか。
たとえば、4GB のアドレス空間と 4GB の物理 RAM がある場合、カーネルは 1GB を取得し、ユーザー空間は 3GB (想定) を取得します!
それで、2GBのRAMがある場合、次のようになりますか?
kernel: 512MB
user space: 0-1536MB
これは正しい仮定ですか?
カーネル空間とユーザー空間のアドレス範囲を常に 1:3 の比率で分割するかどうか。
たとえば、4GB のアドレス空間と 4GB の物理 RAM がある場合、カーネルは 1GB を取得し、ユーザー空間は 3GB (想定) を取得します!
それで、2GBのRAMがある場合、次のようになりますか?
kernel: 512MB
user space: 0-1536MB
これは正しい仮定ですか?
いいえ、分割は仮想アドレス空間を分割するためだけのものです。
これは、0x00000000 から 0xBFFFFFFF までのアドレス空間が「属している」か、ユーザー空間でのマッピングに使用できることを意味します。仮想アドレス 0xC0000000 ~ 0xFFFFFFFF はカーネルに属します。
利用可能な RAM の量とその使用方法は、Linux カーネルで仮想アドレス空間がどのように分割されているかとは関係ありません。
FWIW、ARMでは、分割を構成できるため、3:1(ユーザー:カーネル)にする必要はありません。1:3、2:2、または 3:1 にすることができます。x86 arch にも同様のオプションがあると思います。