[b-free: 109] Log of kernel-working-group
3.14こと木元峰之 (JBA03350@niftyserve.or.jp)
Sun, 05 Feb 1995 23:12:00 +0900
今日はお疲れさまでした。具合を悪くされて欠席された方も多かったようで
すが、お大事になさって下さい。
えー、今日のミーティングにおいて、カーネルワーキンググループで熱い(^^)
議論がありました。具体的には、
・タスク属性における周辺核指定の仮決定(TA_MNGR )
・サーバプロセスに対するメッセージのフォーマットの仮決定
・デバイスドライバを、ITRON の1つのタスクとして動作させるか?
・周辺核に「プロセス格」を与えるか、あるいはITRON のタスクと見るか?
・各種プロセッサ例外(含ページフォールト)発生時の動作について
などです(私が聞きのがした部分もあるので、みなさんフォローお願いしま
す)。この中でいちばん最後の「例外発生時の動作」については激しい議論と
なりましたが、その中で一応これからの議論の土台としたいフローを以下に書
きたいと思います。
注/低レベルライブラリとは、カーネルモード(リングレベル0)で動作す
る、ユーザアプリケーションとITRON の橋渡しをするコードです。このコー
ドは、ITRON をユーザアプリケーションから保護するために存在します。
また、コードは全体で共有しますが、変数領域はプロセスごとに存在しま
す。
====低レベルライブラリ====
・低レベルライブラリの中に、例外処理ハンドラが存在する。
・プロセッサ例外が発生すると、ITRONの割りこみ管理機能を経由して
例外処理ハンドラが起動する。
・例外処理ハンドラは、例外情報をすべてメッセージに収納する(専用シス
テムコール番号を使用する)。このとき、マネージャからの返答メッセー
ジは待たない(通常のシステムコールではerrcd を待つ)。
・ページフォールトの場合はメモリマネージャにメッセージを送信する。
・その他の例外の場合はプロセスマネージャにメッセージを送信する。
・自タスクをsuspend状態にして(注・遅延ディスパッチがかかる)、
割りこみハンドラを終了する。
====メモリマネージャ====
・例外メッセージを受信したら、ページフォールトの原因を調べる。
・不法アクセスによるページフォールトならば、例外メッセージをプロセス
マネージャに回送する。
・スワップアウトによるページフォールトならば、ファイルマネージャにメッ
セージを通知して、ページフォールトを解決してもらう。
・ページフォールトが解決した後、タスクをresumeする。
====プロセスマネージャ====
・例外メッセージを受信したら、デバッグ支援情報を記録して、プロセスを
強制終了する。
−−−−
また、議論の過程で以下のコードが生まれました(^^)。タブは半角空白4つに
置換してあります。
/*ITRON 用のタスク属性*/
#define TA_MNGR 0x00010000
/*tskattr において、周辺核属性*/
#define TA_USER 0x00000000
/*tskattr において、ユーザプロセス属性*/
typedef struct { /*サーバプロセスに発行するメッセージの構造*/
ID mbfid; /*返答メッセージ受け取り用のmbfid */
WORD msgtyp; /*システムコール番号*/
ID tskid; /*送信元のtskid*/
WORD len; /*以下に続くメッセージ本体のバイト数*/
UWORD arg[0]; /*メッセージ本体*/
} SYC_REQ;
typedef struct { /*サーバプロセスから返り値を受け取るメッセージ*/
WORD errcd; /*エラーコード*/
} SYC_REP;
以上、カーネルワーキンググループの議事録にかえて(^^;;;
JBA03350 3.14 こと 木元峰之