(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/