[OSASK 5011] Re: シグナル(ぐいぐい01).

  こんにちは、川合です。ご意見ありがとうございます。


KOYANAGI, Masaaki さんは 2002/09/16 23:02:21 の「[OSASK 5003] Re
: シグナル(ぐいぐい01).」で書きました:

>優先度の低いシグナルが捨てられやすくなるだけでは不十分ではないでしょう
>か?
>極端な場合、シグナルボックスが先頭から半分まで優先度の低いシグナルで
>埋まっていた時に、優先度の高いシグナルが発生しても、優先度の低いシグ
>ナルを全て処理しないと、アプリは優先度の高いシグナルが発生したことを
>感知できません。

  そのとおりですが、これはこれで良いのです。発生順序が重要なこと
はままありますので勝手に入れ替えるわけにはいきません。もしそうい
う事態が起りうるようなアプリなら、シグナルボックスから読み取った
シグナルを分類してキューに貯めて、それから処理すればいいと思いま
す。

>(1)global level が最も高いシグナルが signal box に存在している場合に、
>lib_waitsignal()では、その global level のシグナルが返される。
>つまり、global level の高いシグナルは global level の低いシグナル
>よりも常に優先され、割り込むことができる。

  これについてですが、似たような仕組みは複数のシグナルボックスを
サポートすることで対応できます。つまり優先度の高いシグナルはシグ
ナルボックス1に入れて優先度が低ければシグナルボックス2に入れると
か、そんな感じです。それでシグナルボックス1を見てからシグナルボ
ックス2を見ればいいわけです。

  だからシグナルボックスを複数にしようかどうかを検討しているんで
すが、うーん、微妙なのです。結局シグナルボックスが複数なければい
けないような複雑な処理をする場合、アプリ側でキューを構成する方が
自由度が高く、だったらシグナルボックスは一つにしておくほうがシス
テムは簡単ですしアプリにも好都合です。

  キューから処理するようにすれば、inner-level的なことをアプリが
やってもいいわけです。

  あまり良い例ではありませんが、pokonやwinmanはそういうキューも
どきをやっていますね。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/


ML番号でジャンプ
ML単語検索