CPUのPTBRおよびPTLRレジスタ(通常はPCBに格納されている)を使用して、プロセスごとのページテーブルを処理するOSの階層ページテーブルが必要な理由を知りたいです。
PTLRのおかげで、現在のプロセスのページテーブルサイズの制限を確認できるため、そのページテーブルには、アドレスメモリスペース(システムアドレスメモリスペースほど大きくはありません)のエントリのみが含まれます。
プロセスの仮想アドレス空間がまばらでない場合(その仮想ページ番号は0、1、2、...)、最大でK個のエントリのプロセスページテーブルが作成されます。全体のサイズは最大で数MBになります。 、そして私は単純な連続した配列を使用する方が良いと思います。
では、なぜ多くの実際のソリューション(つまり、x86およびx64)がマルチレベルのページテーブル(またはハッシュページテーブル)に基づいているのでしょうか。
ありがとう。
1 に答える
0
スパース仮想アドレス空間が良いからです。アドレス空間がまばらであるため、OSは(一部の)ワイルドポインタを追跡するプログラムをクラッシュさせることができ、事前にリンクされた共有ライブラリを実用的にすることができます。おそらく最も便利なのは、スタックをメモリとヒープの「最上位」から拡張できることです。 「下」の端から。もちろん、ページテーブルインデックスを符号付き整数として定義することもできます。これにより、単純な配列だけで後者の機能を実装できます。
また、「メモリオーバーコミット」割り当てについて考えてみてください。数ギガバイトをmallocすると、OSは「確かに、大丈夫です」と言うかもしれません。数ギガバイトを要求するほとんどのプログラムは、そのごく一部しか使用しないことがわかっています。不必要に大きくない単純な配列では、そのようなものをサポートする際に問題が発生する可能性があります。
于 2011-08-16T22:36:45.330 に答える