パスワードを忘れた? アカウント作成
609360 journal

tarosukeの日記: talosという名の俺OS

日記 by tarosuke

カーネルメモリは全プロセスで共有するつもりなのだが、そうするとIA32で
は解は一つしかない。つまり、あらかじめカーネルメモリ分のページテーブル
を割り当てておくのだ。

ページディレクトリのスヌーブなんてやってられないので、あらかじめページ
テーブル作っておくってわけ。で、プロセス生成時にはプロセスのページディ
レクトリに最初からカーネルのページテーブルを登録しておくわけだ。

プロセス切替え時にTLBのフラッシュが起きないと酷い目に合うんだけど。
# ページテーブルの変更がスヌーブされないからね。

つーわけで、せっかくページテーブルを動的割り当てにしたところだけどカー
ネル領域のページテーブルは固定割り当てに戻す。ただし今度はカーネル領域
全ての分を予め確保するがな。64MB確保するとしてもページテーブル領域は
64KBだから大したことないし。
# でも実行ファイルが無駄に大きくなるんだよなぁ...

そうすると、初期化時には実ページ管理領域までを実アドレスで、それ以降を
空ページってことにすればいいか。んで、あとは仮想ページ管理に任せるって
ことで...

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...