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

杉本明加 asuka.choronos @ gmail.com
2012年 1月 31日 (火) 23:36:58 JST


高橋様

杉本です。

同一優先度に対する複数のタスク登録は今のところ前向きに考えています。
(高田先生、斉藤さんとの共通見解ではありませんが)

その場合、同一の起動時優先度を持つタスクが複数実行可能状態に
なった場合、優先順位は先に複数実行可能状態になったものが高くなる
従来の仕様通りです(FCFS)。同一優先度のタスクは一つしか実行状態に
ならないのでスタック共有が可能です。実装としては、同一優先度のタスクが
存在するタスク優先度にのみレディキューを用意する形を考えています。

DEF_EPRI自体は排他としての用途があり、SSPではタスク間同期機能がなく
排他手段が限られるので廃止はしなくてよいかと思っています。


高橋様の提案なのですが、私が捉え違いをしていないか
確認いただけるでしょうか?
(理解力が低いのでご面倒ですが確認願います)

 - 同一優先度に対して1つのタスクのみ登録できる制限を撤廃
 - タスクの間の優先順位は起動優先度で区別する
  (左記のメールでのpri_tblで定義されていたデータでしょうか?)
 - 起動優先度はタスクが起動されたタイミングで変更される
   具体的には、既に実行可能状態になっていないタスク優先度を持つタスクの
   中で最も高くなる
 - タスクが実行されるときの優先度が実行時優先度


以上、よろしくお願いします。


> 2.の効果((toppers-users 3818)の5.先取り方式の提案)については、さらに続きがあります。
> 「DEF_EPRIを廃止し、CRE_TSKで優先度のみ指定する仕様とする。」
> さらに、タスクの起動優先度はASPとかと同じように1-16を自由に設定可能とし、
> 同一優先度のタスクは、狭義の省スタックされる仕様とします。
>
> そのための実装方法は以下の通りです。((toppers-users 3853) と合わせてです)
> 優先度の管理をここで3つのものを利用するものとします。
> 1)(外部表現)タスク起動優先度 これが、CRE_TSKで設定したものです。これは ref_tsk等でも参照されます。
> 2)内部表現の起動時時優先度
> 3)内部表現の実行時優先度
>
> 1)はROMのテーブルに置いておきます。2)と3)はコンフュグレータで自動的に割り当てます。
> ただし、同一優先度のタスクが無い場合は1)==2)==3)になります。
> 実行時優先度はまず外部表現の優先度の高いもの順に並べます。高いタスクで同一優先度は適当に起動時優先度を順番に割り当てます。
> 同じ(外部表現)優先度がおわったら、同様に並べていきます。これで優先度が決定されるものとします。
>
> 例) タスク1 優先度1 タスク2 優先度1 タスク3 優先度2の場合
> タスク1 外部表現タスク起動優先度1 内部表現起動時優先度1 内部表現実行時優先度1
> タスク2 外部表現タスク起動優先度1 内部表現起動時優先度2 内部表現実行時優先度1
> タスク3 外部表現タスク起動優先度2 内部表現起動時優先度3 内部表現実行時優先度3
> タスク1と2は狭義の省スタック化になります。
>
> これで、通常のASPなどのITRONと同じスケジューリングがされ、かつ同一優先度の狭義の省スタック化がされ
> さらに互換性が高いものになると考えています。
>
> いかかでしょうか?
>
> 杉本様、斎藤様 一度ご検討いただけたら幸いです。
>
>
> ---
> アライブビジョンソフトウエア株式会社
> 高橋和浩
> 673-0005兵庫県明石市小久保2-2-7幹線ビル4F
> Email:takahashi_kazuhiro @ nifty.com
> http://homepage3.nifty.com/ALVS/