[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 こと 木元峰之