平成24年度 春期 午前Ⅱ 問9
オペレーティングシステム
デッドラインに関する問題
優先度に基づくプリエンプティブスケジューリングが行われる二つのタスクA,Bがある。優先度はAの方が高く,制約条件は表のとおりである。Bが実行中,割込みによってAに実行を移すとき,A,Bともにデッドラインを超えないためには,割込みハンドラを何マイクロ秒以内で処理する必要があるか。ここで,割込み発生から割込みハンドラが起動するまでの時間,及びタスク切替えによるオーバヘッドの時間は無視するものとする。
単位 マイクロ秒
| タスクの実行時間 | 起動してからデッドラインまでの時間 | |
|---|---|---|
| タスクA | 30 | 60 |
| タスクB | 50 | 100 |
- ア20
- イ30
- ウ40
- エ50
答えと解説を見る
✓ これが正解ア20
解説
Bの50+Aの30+ハンドラの時間≦100から、20マイクロ秒以内です。
軸は、Bの起動からデッドラインまでの100マイクロ秒の中に、どの処理が入るかを足し合わせることです。Bの実行中に割込みが起きると、割込みハンドラが動いたあと、優先度の高いAが30マイクロ秒実行され、その後でBの残りが実行されます。Bの実行時間50はそのまま必要なので、割込みハンドラの時間をhとすると、Bの期限を守る条件は50+h+30≦100、つまりh≦20です。Aの期限は割込みから数えてもh+30≦60、つまりh≦30なので、Bの条件のほうが厳しくなります。両方を満たすのはh≦20で、20マイクロ秒以内となり正解の値と一致します。期限の長いタスクには、割り込む側の処理がすべて上乗せされると考えましょう。
ほかの選択肢はなぜ違うのか
- イ30:30マイクロ秒は、Aの期限だけを考えたh+30≦60から出る値です。このときBは50+30+30=110マイクロ秒かかり、100マイクロ秒のデッドラインを超えてしまいます。
- ウ40:40マイクロ秒を使うと、Bの起動から終わりまでに50+40+30=120マイクロ秒かかります。Bのデッドラインの100マイクロ秒を20マイクロ秒超えるので、この値では間に合いません。
- エ50:50マイクロ秒では、Bの起動から終わりまでに50+50+30=130マイクロ秒かかり、デッドラインの100マイクロ秒を30マイクロ秒超えます。Aの30マイクロ秒も同じ時間の中に入ることを数えないと、100−50でこの値になります。
出典:平成24年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問9
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)