平成22年度 春期 午前Ⅱ 問23
オペレーティングシステム
プリエンプティブの問題
プリエンプティブな優先度ベーススケジューリングで動作する三つの周期タスクA,B,Cがある。タスクCが実行可能になってから完了するまでの時間は最大何ミリ秒か。
| 周期(ミリ秒) | 最大実行時間(ミリ秒) | 優先度 | |
|---|---|---|---|
| タスクA | 400 | 50 | 高 |
| タスクB | 650 | 200 | 中 |
| タスクC | 700 | 300 | 低 |
- ア300
- イ550
- ウ600
- エ700
答えと解説を見る
✓ これが正解ウ600
解説
実行中にタスクAが2回、タスクBが1回入り、最大600ミリ秒です。
タスクCは優先度が最も低いので、実行中にタスクAとBが実行可能になるたびに中断されます。最悪の場合は、A、B、Cが同時に実行可能になったときです。まずAの50ミリ秒とBの200ミリ秒が先に動き、その後にCが実行されます。Cの完了までの時間をRとすると、R=300+(R以内にAが実行可能になる回数)×50+(R以内にBが実行可能になる回数)×200です。初めにR=300+50+200=550とすると、550ミリ秒までにAは0と400ミリ秒の2回実行可能になるので、R=300+100+200=600です。600ミリ秒まででもAは2回、Bは1回のままなので、600で確定します。回数を数え直して値が変わらなくなるまで繰り返す、と覚えると解けます。
ほかの選択肢はなぜ違うのか
- ア300:300ミリ秒は、タスクCの最大実行時間だけの値です。優先度の高いタスクAとBが先に実行されたり、途中で割り込んだりする時間が含まれていないので、最悪の場合の時間になりません。
- イ550:550ミリ秒は、タスクCの300ミリ秒に、タスクAとBを1回ずつ加えた値です。400ミリ秒の時点でタスクAが2回目に実行可能になり、Cを50ミリ秒中断させる分が数えられていません。
- エ700:700ミリ秒は、タスクCの周期と同じ値です。最悪の場合の割り込みをすべて数えても600ミリ秒で完了するので、周期の長さまでかかることはありません。
出典:平成22年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問23
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)