オペレーティングシステムの設計では、カーネルはほとんどの場合、高い仮想メモリアドレスにマップされるため、上位メモリ部分の制御が得られます。以下のスペースは、「Linux 3/1 virtual address split」という優れた方法で説明されているように、ユーザー空間で動作するアプリケーション用です。カーネルのハイメモリ
私が知りたいのは、なぜですか?この設計決定はどうですか?なぜカーネルはメモリの下位部分を使用しないのですか?これは私にとって本当に明確ではない、あるいは私は何かを監督したかもしれない。
編集:この質問は物理アドレスではなく仮想アドレスに関するものです。
ユーザスペースコード – ren
から保護する必要があるメモリの部分を覚えやすくするための規則ですが、カーネルのメモリは常に制限されているか、ユーザー空間のメモリが無駄になっている可能性があります。したがって、カーネルが(例えば、モジュールをロードするために)追加のメモリを必要とするとき、それを確保するための特定のパーミッションを割り当てることができます(ページングが有効な場合)。 –