質問: highmemについて ia-32のカーネルは、1gの仮想空間を、物理アドレスの下位からストレートマップしてる故、1g(896m)を超える物理アドレスにアクセスできない。従って、理屈はともかく、himem空間を通して、物理アドレスをアクセスする必要がある。となんとなく理解しています。 そこでふと思ったのですが、上の理解が妥当だとすると、himemはあくまでカーネル空間だけの話で、プロセス空間は3g、しかも連続してマップする必要のないユーザプロセスでは、ページテーブルを設定すれば言いだけの話で、従って1gを超える物理メモリを搭載した環境で、あえてhimem領域を設定しなくても、カーネルはちゃんとユーザプロセスに1gを超える物理メモリを割り当てることができる。と思いに至った次第です。この認識、正しいでしょうか?
回答: > 1g(896m)を超える物理アドレスにアクセスできない。 > カーネルはちゃんとユーザプロセスに1gを超える物理メモリを割り当てることができる。 「1gを超える物理アドレスにアクセスできない」と最初に書いてある理解から、どうして「1gを超える物理メモリを割り当てられる」という結論になったのでしょうか... カーネルがアクセス出来ないのに、割り当てるも何も無いと思います。