(toppers-users 3749) Re: SSPの制約タスクの待ちについて

yasuo kominami(nifty) ykominami @ nifty.com
2012年 1月 17日 (火) 23:48:06 JST


高田先生

2012年1月17日23:14 Hiroaki TAKADA <hiro @ ertl.jp>:
> 小南さん
>
>> 私があげた1,2,3を守ったとしても、たとえば現在公開されているSSPの
>> sample1において、
>> MAIN_TASKが(ASPなどでの無限ルール内での待ちを伴うサービスコールの呼び
>> 出しに代えて)、
>> 周期ハンドラで定期的にタスク起動されますが(ループしていないのですぐ終
>> 了してしまい
>> ますが)、このMAIN_TASKが、他のTASK1などとスタックを共有していて、
>> TASK1が実行状態
>> であった場合でも、カーネルがTASK1をプリエンプトして、MAIN_TASKを実行状
>> 態にすると
>> 危ないのではないかと考えました。
>
> これは危なくありません。
>
> 「スタックを共有する」と言うのは、優先度が異なるタスクの間では、一連の
> スタックを使うことを意味しています。上のケースでは、TASK1のスタックの
> 続きの領域をMAIN_TASKが使いますので、問題ありません。
>

続きを使うという場合、MAIN_TASKは(スタックを共有している)TASK1がどれだけスタックを消費
していたかに関わらず、自身のCRE_TASKなどで指定したスタックサイズ分を自身が消費しても
安全(意図せずにスタックを共有していないタスクのスタックなどの領域を使わないという意味です)
なのでしょうか。
たとえば、「MAIN_TASKが指定したスタックサイズ+TASK1が指定したスタックサイズ」がスタック
として使えるよう、あらかじめ確保されていれば、安全とはいえると思いますが。

これは、koizumiyoshiyuki@gmail.comさんの、「toppers-users 3727) SSPの制約タスクの待ちについて」
での疑問でもあるのですが。