tarosukeの日記: 俺OS x あるいはtalos(仮称
実ページ管理領域初期化についてもう少し考えてみる
初期化時には領域だけ取っておいて初期化を後回しにしておいて、
実ページを確保しようとした時にページプールが空だったらその都
度初期化して新しく作ったページを実ページとして割り当てる。と
すると、起動にかかる時間を最小化できそう。
不感時間が長くなるし時間信頼性も劣化するけど大した時間じゃな
いし、それにこいつで戦闘機やロケットの制御をするわけじゃない。
そもそもスラッシング耐性がほとんどないからそういう用途には使
えないんだし。この方法で大丈夫そう。
# スラッシング耐性&時間信頼性をこれ以上つけようとすると時間
# 性能がもんの凄く低下するからその方向は論外。
流れ的には...ページフォルト→実ページプールから実ページを取
り出し(成功なら割り当てて終了)→実ページを1つ初期化→新しく
作った実ページを割り当てて終了。てな感じだろうか。
仮想ページの方も...メモリ割り当てシステムコール→仮想ページ
割り当て→仮想ページがプールになければ新しく作成→ページディレ
クトリが一杯だったら実ページを取得してそこに新しいページディ
レクトリを作成。みたいにできるかも。
ちなみにこの辺の管理用に取得したメモリは返却しない。実ページ
は不要になったらプールへ返却するけど、仮想ページ管理用メモリ
は不要になっても仮想ページプールに追加するだけ。
なので一見ページリークしているように見えるかも。
さて、いいかげん仕事行くか。たぶん500を5000か50000にするだけだが結
果を確認しないとな。
俺OS x あるいはtalos(仮称 More ログイン