(toppers-users 3902) Re: DEF_RPRIを無くすご提案

高橋和浩@nifty takahashi_kazuhiro @ nifty.com
2012年 2月 9日 (木) 10:57:49 JST


こいさんさん 皆様 アライブビジョンソフトウエアの高橋です。

> 「vmask_pri(優先度)で指定した起動時優先度以下のディスパッチを
> 抑止します」と有りますが、この機能、逆に見ると、動作しているタスク(自タスク)の優先度を引き上げる事と同じだと思います。chg_pri(優先度)
> 私もSSPに優先度を変更する機能を追加は、有効だと思っています。
> 他タスクの優先度変更は考えないのでchg_priを使うと混乱しますね。

賛同いただきありがとうございます。
動作としては優先度を引き上げるのと同じになると思います。
基本的には chg_ipm や chg_ims のタスク優先度版ですね。
たぶん、chg_ipmや chg_imsも現在の割り込みマスクレベルを上げる処理をすると考えているので
vmask_priも優先度があがると考えても間違いないと思います。

> 余分な話ですが、
> 優先度の変更は制限をつけて起動優先度、実行優先度共に変更できるようにするのはどうでしょうか。考え方として、タスクの数より起動優先度テーブルの数を大きくして於き、同一タスクを複数の
> 起動優先度テーブルに割り当て、この範囲で優先度を変更可能にする。
> タスクIDから起動優先度変換と起動優先度からタスクIDの変換があれば実現できそうです。

たぶん自分がその内容を理解できていないせいだと思うということを前提にコメントします。
可能な部分と可能でない部分があるように思います。まずそれが結論です。

以下詳細
実行時優先度の優先度切り替えは大変そうです。プリエンプト関係(変な用語ですが)を変えるような
実行時優先度変更は実現可能かもしれませんが、スタック使用量の再算出が必要になるように思います。
あまり現実的でないように思います。
起動時優先度と実行時優先度がそろっている場合の優先度変更は、スタック使用量が変わらない範疇であれば
前述のpri_tblにさらに実行時優先度もそれに合わせれば実現可能と思います。
ただ、制約条件のチェックが複雑になりそうです。つまりスタック使用量が変わらない変更かどうかの判断が
難しそうです。 今一度考えれば案はあるかもしれません。
起動時優先度の変更については、私の提案している方法で実装は容易です。ただ、プリエンプトしない関係の
起動優先度の間でかつ、さらに優先度の外部表現を含めたコンフュギュレーションが前提になります。
つまり、起動時優先度があるグループ間にいくつかの起動時優先度を持った場合に、さらに他の
独立した起動時実行優先度が含まれる場合は問題があると思います。
なのでそのようなコンフュグレーションができなくした場合に限られます。そうではなく手動で
設定した場合に以下の場合に問題があります。

具体的には
タスク B 4-4
タスク C 3-3
タスク D 5-2
の場合に2グループあります。 タスクDの起動時優先度を2に変えることはまずいということです。

もともとタスクが休止から実行可能状態になるときに起動優先度をそのグループの中で最優先にするものです。
そのグループの中での優先度変更は可能だと考えています。

具体的にできそうな機能:
制限付きの起動時優先度変更 vchg_pri(タスクID,内部表現起動時優先度)
ただし内部表現の起動時優先度なので、タスクの現在の内部表現の起動時優先度の読み出しや
設定範囲も獲得するサービスコールも必要になるかと思います。

よろしくお願いします。


On Tue, 7 Feb 2012 21:08:04 +0900
koizumi yoshiyuki <koizumiyoshiyuki @ gmail.com> wrote:

>  高橋さま
> 
> こいさんです。
> 
> 「vmask_pri(優先度)で指定した起動時優先度以下のディスパッチを
> 抑止します」と有りますが、この機能、逆に見ると、動作しているタスク(自タスク)の優先度を引き上げる事と同じだと思います。chg_pri(優先度)
> 私もSSPに優先度を変更する機能を追加は、有効だと思っています。
> 他タスクの優先度変更は考えないのでchg_priを使うと混乱しますね。
> 
> 余分な話ですが、
> 優先度の変更は制限をつけて起動優先度、実行優先度共に変更できるようにするのはどうでしょうか。考え方として、タスクの数より起動優先度テーブルの数を大きくして於き、同一タスクを複数の起動優先度テーブルに割り当て、この範囲で優先度を変更可能にする。
> タスクIDから起動優先度変換と起動優先度からタスクIDの変換があれば実現できそうです。
> 
> 以上
> 
> 
---
アライブビジョンソフトウエア株式会社
高橋和浩
673-0005兵庫県明石市小久保2-2-7幹線ビル4F
Email:takahashi_kazuhiro @ nifty.com
http://homepage3.nifty.com/ALVS/