(toppers-users 3861) DEF_RPRIを無くすご提案

高橋和浩@nifty takahashi_kazuhiro @ nifty.com
2012年 1月 31日 (火) 14:50:02 JST


こいさん様 MLの皆様 そして 斎藤様 杉本様
こんにちは、アライブビジョンソフトウエアの高橋です。

後半 「2.の効果((toppers-users 3818)の5.先取り方式の提案)については、さらに続きがあります。」
については、開発者にご意見いただきたいと思っています。

---------前半--------------------------------------------------------------------------------
> 2.は処理が終了したとき次の起動する優先が等しいときと考えたので、同一優先度ではプリエンプトしません。
そうです。 そのつもりです。

> 説明が混乱するかも知れませんが、「_kernel_tinib_epriorityで同一実行優先度が隣り合っているときのみ」
>優先度が同一だとの認識です。(これは私流の考え方かも知れません)。起動優先度と実行優先度の指定で、
>以前私が書いた、優先度逆転する場合は同一優先度としないことが前提でになっています。この為には、
>runtsk_ipriとして起動優先度と実行優先度を持つ必要があります。
> 優先度が逆転した場合の処理はsemePri();の中で考えればよいかと手抜きをしています。
> 
なんのためにそうしたいのか見えてきません。書いていることは同一優先度(起動時か実行時かちょっと
わかりませんが、さらにとなりあったものまで?)で、後から起動されたタスクにプリエンプト
したいようです。そういう実装も可能だと思いますが、提示されたコードでそうなっているかどうか
をすいませんが、見ていません理由は興味が無く、効果が薄いと思うからです。
 確かに各タスクが従来に比べてば偏って実行状態になることが少なくなるように思いますが、
これはこれでどれだけの分散されるかは、新たな方法で計算する必要もあり、起動するタイミングによっては
負荷の偏りは発生し、これも使い物にならないものだと私は思っています。
さらに、これの場合プリエンプトされるので、狭義の省スタック化されないのは繰り返しになりますが
メリットもありません。
---------後半-------------------------------------------------------------------------------------
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/