[b-free: 122] Re: page fault process

内藤 隆一 (GGC00661@niftyserve.or.jp)
Sun, 12 Feb 1995 05:01:00 +0900

隆一です。

B-Free メイリングリストの皆さん、こんにちは。

>> On Fri, 10 Feb 1995 21:57:00 +0900, JBA03350@niftyserve.or.jp said:

> In-Reply-To: Your message of "Fri, 10 Feb 1995 01:51:00 +0900"
>  真鍋 裕一 さま

> | 私が気にしているのはこの点です。ページインを待つタスクはready/wait/sus
> |upendのいずれの状態でも構わないと思います。要はスケジューラがこのタスク
> |をrunとするようなディスパッチを行わなければ良いのです。

>  ITRON のタスクが持つ状態を、どのようにマネージャの状態に対応させるか
> という議論は必要だと思います。これを決めれば、各マネージャの大体の動作
> が記述できそうです。

> JBA03350 3.14 こと 木元峰之

ページフォールトが発生したときのタスクの状態を、新しく定めてもいいよう
な気がします (おぉ、また仕様拡張だ!)。ユーザプロセスがページフォール
ト割り込みを発生させた時点で、ITRON カーネルが、ユーザプロセスをページ
フォールト状態にします。
このように考えたのは、物理メモリは確かにタスクにとっては資源ですが、ペー
ジフォールトが発生したというのは、タスクがメモリを明示的に要求したとい
うわけではないからです。また、ページフォールトの発生の原因として不当な
アドレスをアクセスした可能性もあるわけで、これをメモリ取得要求としてと
らえるのはちょっと違うような気がします。

# それと、ページフォールトの処理は単なる割り込み処理としてはかなり重い
# 処理のように思えます。

ページインの処理ですが、各プロセスごとにページインタスクが動いていると
考えると、LOWLIB だけで処理できそうです。
つまり、あるプロセスがページフォールトを起すと、そのプロセスに張りつい
ているページフォールト処理タスクが RUN 状態になり、ページフォールトを
起した領域についてページインの処理を行います。
このとき、ページフォールトが発生したという通知は、ITRON カーネルあるい
は LOWLIB の割り込みハンドラからのメッセージ送信によって行います。

-- 
内藤隆一 (ggc00661@niftyserve.or.jp)