tarosukeの日記: talosという名の俺OS
日記 by
tarosuke
カーネルメモリは全プロセスで共有するつもりなのだが、そうするとIA32で
は解は一つしかない。つまり、あらかじめカーネルメモリ分のページテーブル
を割り当てておくのだ。
ページディレクトリのスヌーブなんてやってられないので、あらかじめページ
テーブル作っておくってわけ。で、プロセス生成時にはプロセスのページディ
レクトリに最初からカーネルのページテーブルを登録しておくわけだ。
プロセス切替え時にTLBのフラッシュが起きないと酷い目に合うんだけど。
# ページテーブルの変更がスヌーブされないからね。
つーわけで、せっかくページテーブルを動的割り当てにしたところだけどカー
ネル領域のページテーブルは固定割り当てに戻す。ただし今度はカーネル領域
全ての分を予め確保するがな。64MB確保するとしてもページテーブル領域は
64KBだから大したことないし。
# でも実行ファイルが無駄に大きくなるんだよなぁ...
そうすると、初期化時には実ページ管理領域までを実アドレスで、それ以降を
空ページってことにすればいいか。んで、あとは仮想ページ管理に任せるって
ことで...
talosという名の俺OS More ログイン