エンベデッドシステムスペシャリスト 2012年 午前2 問09
問題文
優先度に基づくプリエンプティブスケジューリングが行われる二つのタスクA、Bがある。優先度はAの方が高く、制約条件は表のとおりである。Bが実行中、割込みによってAに実行を移すとき、A、Bともにデッドラインを超えないためには、割込みハンドラを何マイクロ秒以内で処理する必要があるか。ここで、割込み発生から割込みハンドラが起動するまでの時間、及びタスク切替えによるオーバヘッドの時間は無視するものとする。

選択肢
ア:20(正解)
イ:30
ウ:40
エ:50
🔒 解説は解答すると表示されます
プリエンプティブスケジューリングの時間制約【午前2解説】
正解の理由
割込みハンドラの処理時間を マイクロ秒とします。割込みハンドラの処理後にタスクAが実行されるため、タスクAの完了時間は、タスクAの起動から マイクロ秒後です。
一方、タスクBはタスクAに実行を中断されます。タスクBが完了するまでには、タスクB自身の実行時間50マイクロ秒に加えて、割込みハンドラの処理時間とタスクAの実行時間が必要です。したがって、タスクBの完了時間は、起動から マイクロ秒後です。
タスクBのデッドラインを超えない条件は、
です。これを解くと となるため、ハンドラは20マイクロ秒以内に処理する必要があります。したがって、該当する選択肢は ア です。
解法ステップ
-
割込みハンドラの処理時間を と置きます。
-
タスクAについて、デッドライン条件を立てます。よって、 です。
-
タスクBについて、タスクB自身の実行時間に、割込みハンドラとタスクAの実行時間を加えます。よって、 です。
-
A、Bの両方がデッドラインを守るには、より厳しい条件を満たす必要があります。したがって、 は20マイクロ秒以内です。
選択肢別の誤答解説
- ア:20マイクロ秒です。タスクBのデッドラインから求められる上限であり、A、B両方の条件を満たします。
- イ:30マイクロ秒です。タスクAのデッドラインだけを考えた場合の上限です。この時間では、タスクBの完了がデッドラインを超えます。
- ウ:40マイクロ秒です。タスクAの実行時間30マイクロ秒を差し引いた残り時間を、ハンドラの許容時間と誤って扱った値です。
- エ:50マイクロ秒です。タスクB自身の実行時間ですが、タスクAとハンドラによる割込み時間もタスクBのデッドラインに影響します。
よくある誤解
- タスクAの条件だけを計算し、 マイクロ秒を答えにしてしまうことがあります。タスクBのデッドラインも確認が必要です。
- タスクAの実行時間はタスクBのデッドラインに影響しない、と考えてしまうことがあります。タスクAが実行されている間、タスクBは実行できません。
- 割込みハンドラの時間をタスクAの実行時間に含めず、タスクBへの影響も見落とすことがあります。ハンドラの処理時間は、A、B双方の完了を遅らせます。
補足コラム
プリエンプティブスケジューリングでは、優先度の高いタスクが起動すると、実行中の優先度の低いタスクを中断して実行できます。この問題では、Aが実行される時間だけでなく、Aへ切り替わる前の割込みハンドラの時間も、Bの処理を遅らせる要因になります。
複数のタスクにデッドラインがある場合は、各タスクについて「実行に必要な時間の合計がデッドライン以内か」を確認し、最も厳しい条件に合わせます。
FAQ
なぜタスクBの実行時間にタスクAの実行時間を加えるのですか?
タスクAが実行されている間は、プリエンプトされたタスクBが実行できないためです。その分だけ、タスクBの完了が遅れます。
タスクAが実行されている間は、プリエンプトされたタスクBが実行できないためです。その分だけ、タスクBの完了が遅れます。
タスクAのデッドライン条件だけでよいのではありませんか?
タスクAのデッドラインを守れても、割込みによって遅れたタスクBがデッドラインを超える可能性があります。両方の条件を満たす必要があります。
タスクAのデッドラインを守れても、割込みによって遅れたタスクBがデッドラインを超える可能性があります。両方の条件を満たす必要があります。
タスク切替えのオーバヘッドも加えますか?
問題文で無視すると指定されているため、計算には含めません。
問題文で無視すると指定されているため、計算には含めません。
関連キーワード: プリエンプティブスケジューリング、優先度、割込みハンドラ、デッドライン、タスク実行時間

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

