平成22年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問23
テクノロジ/ソフトウェアプリエンプティブな優先度ベーススケジューリングで動作する三つの周期タスクA,B,Cがある。タスクCが実行可能になってから完了するまでの時間は最大何ミリ秒か。 タスクA:周期400,最大実行時間50,優先度 高 タスクB:周期650,最大実行時間200,優先度 中 タスクC:周期700,最大実行時間300,優先度 低 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成22年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問23
- ア300
- イ550
- ウ600
- エ700
正解:ウ
解説
最も優先度の低いタスクCの最大応答時間(実行可能になってから完了するまでの時間)は,タスクC自身の実行時間に,その間に発生し得る高優先度タスクA,Bによる割込み(プリエンプション)の影響を加えて求めます。まず,タスクC単独の実行時間は300ミリ秒です。この300ミリ秒の間に,周期400ミリ秒のタスクAは最大でceil(300/400)=1回,周期650ミリ秒のタスクBは最大でceil(300/650)=1回発生し得るので,暫定的な応答時間は300+1×50+1×200=550ミリ秒になります。しかし,応答時間が550ミリ秒に延びたことで,その間にタスクAが発生し得る回数もceil(550/400)=2回に増えるため,再計算すると300+2×50+1×200=600ミリ秒になります。さらにこの600ミリ秒についてタスクA,Bの発生回数を確認すると,ceil(600/400)=2,ceil(600/650)=1のままで値が変化しないため,600ミリ秒に収束します。したがって,タスクCの最大応答時間は600ミリ秒です。
選択肢ごとの解説
- ア誤り。300ミリ秒は,タスクCが一度も高優先度タスクに妨げられずに実行できた場合の時間であり,タスクA,Bによる割込みの影響を考慮していない値です。
- イ誤り。550ミリ秒は,計算過程の途中に現れる暫定値であり,その時間内でタスクAが発生し得る回数が増えることを反映した収束後の値ではありません。
- ウ正しい。タスクA,Bによる割込みの影響を繰り返し計算して収束させると,タスクCの最大応答時間は600ミリ秒になります。
- エ誤り。700ミリ秒はタスクCの周期そのものであり,収束計算によって求められる最大応答時間600ミリ秒よりも大きい,過大な値です。