- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HIGHMEMについて)
物理メモリを超えるアクセスについて
このQ&Aのポイント
- IA-32のカーネルは、1Gの仮想空間を、物理アドレスの下位からストレートマップしてる故、1G(896M)を超える物理アドレスにアクセスできない。
- しかし、物理メモリを超えるアクセスが必要な場合、HIMEM空間を通して物理アドレスにアクセスすることが必要です。
- ただし、ユーザプロセスではページテーブルを設定すれば、1Gを超える物理メモリを割り当てることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
32bitアドレッシングでは4Gバイトまで連続でアクセスできますが、Linuxでは下位3Gがユーザー空間、上位1G弱がkernel空間にマップされるようになっています。 Highmemが必要なのはkernel空間で1Gを越えるメモリを必要とする場合だけ(アドレスレンジが足りなくなるため)ですので、おっしゃるとおりユーザー空間にはHighmemは関係ありません。普通にMMUを使って3Gまでマップできます。 詳しいことは下記を参照して下さい。
その他の回答 (1)
- uwi
- ベストアンサー率74% (55/74)
回答No.1
> 1G(896M)を超える物理アドレスにアクセスできない。 > カーネルはちゃんとユーザプロセスに1Gを超える物理メモリを割り当てることができる。 「1Gを超える物理アドレスにアクセスできない」と最初に書いてある理解から、どうして「1Gを超える物理メモリを割り当てられる」という結論になったのでしょうか… カーネルがアクセス出来ないのに、割り当てるも何も無いと思います。
質問者
補足
物理アドレスにアクセス。というのでなく、カーネルモードとして動作できる物理アドレス。ということでした。ことば足らずで申し訳ありませんでした。
お礼
回答ありがとうございました。これでなんかすっきりいたしました。早々に教えていただいた記事を読んでさらに理解を深めたいと思います。