(toppers-users 757) Re: calltex の呼び出しコンテキストについて

Suikan seiichi_horie @ yahoo.co.jp
2003年 2月 17日 (月) 20:50:08 JST


今井さん、koisanさん、

ご教授ありがとうございます。だいぶ理解できてきました。

今井さん、

>タスク/非タスクコンテキストとプロセッサの物理的状態の対応は
>OSの実装者に任されています。
>
この一言を求めていた気がします。

>ですから、
> (1) m68kの用語で言うEXCEPTION状態であるか否か
> (2) μITRONのタスク/非タスクコンテキストの判別
>は別問題です。
>
やっぱりそうですか。ディスパッチャー周りがサーカスになっているのは理解
しているつもりでしたが、まだまだ甘かったようです。今考えている方式だと、
割り込みから戻るときにタスク例外が起動された場合、その部分では進行中の
割り込みよりレベルの低いものを受け入れられませんし、何よりディスパッチは
割り込みから完全に抜けるまでお預けになってしまいます。もっと頭を使わない
とだめみたいです。

koisanさん、

> タスクか非タスクか、ロックかアンロックか、割り込みレベルの変更処理、等
>ではHWによっては中間的な時間帯が出来てしまうので、これを意識していない
>と、ドツボにはまりますね。私も苦労しました。ここが綺麗に出来ないと公開も
>できないし、自分で移植したものは、まだまだつらい事態に落ちそうです。この
>辺、具体的な例で説明したものが欲しいところです。一人でやっていると結構き
>ついですね。

確かに相談相手がないのはつらいですね。幸い、私は遊びでやっている
ので納期がないのが救いです。

Blackfinコアの場合、サブルーチンも割り込みも戻り番地をスタックに退避
するのはプログラマの責任です。そのため、割り込みルーチンの中で一時
的な番地に向けてrtiを実行して割り込みを縮退させ、タスク例外実行後に
rtsでタスクの割り込まれた地点に帰るという手法を使えません(割り込まれた
タスクがrts用の退避レジスタを使っていたかもしれない)。rtsに遅延分岐が
あればいいのですが、それもないのでディレイスロットでrts用のレジスタの
後片付けというわけにもいきません。

この辺の処理はプロセッサごとに大変だろうなと思います。それぞれのプロ
セッサでの実装方法をまとめて並べたら壮観でしょうね。

おかげで理解が深まりました。別の方法を探ってみます。
ありがとうございました

酔漢

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/