[b-free: 118] RE^2:page fault process

真鍋 裕一 (NBG02534@niftyserve.or.jp)
Fri, 10 Feb 1995 01:51:00 +0900

|・・常にカーネルモードのスタックは常駐している(あるいはプロセスのスイ
ッチ
|と同時にアクティブになる)ということなのではないでしょうか。
 これは私の勘違いでした。TSSを使用する場合、IDTにタスクゲートを設
定すれば、例外発生と同時にタスクスイッチが行われるので、予めスタック領域
を割り当てるだけで済みますね。また、タスクゲートを使わないなら、特権0の
スタックはシステムに1つとなるので、これも問題ありませんでした。

| 「割り込みハンドラからタスクの実行を抑制する」という機能から考えると

|suspend がいちばん素直だと思うのですが、いかがでしょうか。また、メモリ
から
|読み出すだけでwaitになるというのは不自然だという感覚的な点も気になりま
す。
 ページフォルトタスクは、「メモリと言う資源の獲得を待っている。」状態で
あると考えれば、waitでも良いと思うのです。

| この場合、そのプロセスが実行されようとした時点で、同じページフォール
トが
|もう一度発生するだけので、あまり問題にはならないでしょう。
 再びページフォルトが発生すると、ページャに対してページイン要求処理が2
重に登録されると思われるので、やはり対策が必要だと思います。
 私が気にしているのはこの点です。ページインを待つタスクはready/wait/sus
upendのいずれの状態でも構わないと思います。要はスケジューラがこのタスク
をrunとするようなディスパッチを行わなければ良いのです。

真鍋 裕一(NBG02534)