エンベデッドシステムスペシャリスト 2016年 午前2 問10
問題文
リアルタイムOSにおいて、タスクA~Eの発生時刻、処理時間及び優先度が次のように定められている場合、タスクCの終了時刻はタスクAが発生してから何ミリ秒後となるか。ここで、優先度は1が最も高く、優先度の高いタスクが優先的に処理されるものとする。また、OSのオーバヘッドは考慮しないものとする。

選択肢
ア:25
イ:30
ウ:35(正解)
エ:40
🔒 解説は解答すると表示されます
優先度付きタスク実行順序【午前2解説】
正解の理由
優先度の数値は小さいほど高く、より高い優先度のタスクが発生すると、実行中のタスクを中断して処理します。
タスクCは15ミリ秒時点で実行を開始します。20ミリ秒時点で、Cより優先度の高いタスクEが発生するため、Cはいったん中断されます。Eの処理が終わった後にCが残りの処理を行うと、Cの終了時刻は35ミリ秒後です。したがって、該当する選択肢はウです。
解法ステップ
- 0~5ミリ秒は、タスクAを処理します。
- 5~15ミリ秒は、タスクBを処理します。10ミリ秒時点でタスクCが発生しますが、Bの優先度2はCの優先度3より高いため、Bの処理を続けます。
- 15ミリ秒時点でBが終了します。タスクCと、同時に発生したタスクDのうち、優先度が高いCを実行します。
- 15~20ミリ秒にCを5ミリ秒処理します。Cには10ミリ秒分の処理が残っています。
- 20ミリ秒時点で、優先度1のタスクEが発生します。EがCを中断して20~25ミリ秒に処理されます。
- 25ミリ秒からCの残り10ミリ秒を処理するため、Cは35ミリ秒時点で終了します。
選択肢別の誤答解説
- ア(25):タスクEの処理終了時刻を、タスクCの終了時刻と取り違えた場合に選びやすい値です。Eの終了後、Cの残りの処理が必要です。
- イ(30):Eによる中断を考慮せず、Cを15~30ミリ秒に連続して処理した場合の時刻です。
- ウ(35):20ミリ秒時点でEがCを中断することを考慮した終了時刻です。
- エ(40):タスクDの処理時間までCより先に加えてしまうなど、実行順序を誤った場合に選びやすい値です。Dの優先度はCより低いため、Cより先には実行されません。
よくある誤解
- 優先度の数値が大きいほど高優先度だと思い込むことがあります。この問題では「1が最も高い」と明示されています。
- タスクが発生したら、実行中のタスクが必ず中断されると考えるのは誤りです。中断されるのは、発生したタスクの優先度が実行中タスクより高い場合です。
- 中断されたタスクの処理時間は失われません。Cは中断前に5ミリ秒処理済みなので、再開後に必要なのは残りの10ミリ秒です。
補足コラム
優先度付きプリエンプティブ方式では、より高い優先度のタスクが実行可能になると、現在のタスクを中断して切り替えます。この問題では、タスクEが発生した20ミリ秒時点でCより優先度が高いため、Eが先に実行されます。一方、優先度の低いDは、Cの処理が終わるまで待機します。
FAQ
タスクDは15ミリ秒に発生していますが、なぜCが先に実行されるのですか?
Cの優先度は3、Dの優先度は4です。数値が小さいほど優先度が高いため、Cが先に実行されます。
Cの優先度は3、Dの優先度は4です。数値が小さいほど優先度が高いため、Cが先に実行されます。
Cは20ミリ秒から何ミリ秒後に処理を再開しますか?
Eの処理時間は5ミリ秒なので、25ミリ秒時点でCが処理を再開します。
Eの処理時間は5ミリ秒なので、25ミリ秒時点でCが処理を再開します。
Cの終了時刻は、Aの発生からの経過時間ですか?
はい。Aは0ミリ秒に発生しているため、Cの終了時刻35ミリ秒は、Aの発生から35ミリ秒後です。
はい。Aは0ミリ秒に発生しているため、Cの終了時刻35ミリ秒は、Aの発生から35ミリ秒後です。
関連キーワード: リアルタイムOS、タスクスケジューリング、優先度、プリエンプション、処理時間

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

