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

tarosukeの日記: 俺OS xiv あるいはtalos(仮

日記 by tarosuke

どうして12程度の数も数えられないのかと小一時間...

本命資料を読んでGDTとページングの関係について悩んでいたら夜が明けた。
BIOSの資料発見。当然っちゃ当然だけどOADGのページにあった。ついでに
VESAのページでVBEの資料を漁る。

他の俺OSでプロセス空間の上半分にカーネルのエイリアスが出ている設計の
ものがあって、[おもしろい設計だ]とのコメントが付いていたのだが、IA32
ではあれは素直な設計と言える。こっちでもその実装は検討してた。

システムコール打つ度にタスクゲートを通ってもいいけど、そうするとTLBが
フラッシュされてしまうので効率悪いったらありゃしないわけで、カーネル側
のタスクを最小限にとどめておいてAPIをなるべくプロセス空間で処理するの
はページング効率を考えても良い実装だと思う。
# んで、これがIA32がマイクロカーネルを強要する理由の一端。IA32の
# Linuxはps xaした時に括弧が付いてるプロセスが結構あるでしょ?

セキュリテイはセグメントで十分確保できる。というかページはメモリ保護の
ためにあるわけじゃないのでページング機構ではメモリ保護はしないつもり。
代わりにLDTにコールゲートを設けてそれをAPIの入口にする。
# まちがい。コールゲートを設けるのはGDT上。

IA32でOS組むと、こういう実装を強要されるのよ~。せめてアドレス空間が
ホントに48bitsあったらこんな阿呆な事はしないのだが、インテルが主張す
るのとは違い、アドレス空間(リニアアドレス)は実際には32bitsしかないの
だ。この制限は概ね80386が80286にページング機構を付けただけのものだっ
たりするのが原因。ったく、GDTで変換したアドレスまでページングする事ぁ
ねぇだろに。
# ページテーブル領域が勿体ねぇだろが

ま、プロセスあたりの空間を64MBとか128MBとかに限定するんなら別のもっ
と軽くてスマートな方法もないではないんだけど。そして今の所プロセス空間
はそんなもんで十分だったり...

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

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...