エンベデッドシステムスペシャリスト 2015年 午前2 問10
問題文
優先度に基づくプリエンプティブなスケジューリングで動作する、二つの周期タスクA、Bがある。AはBよりも優先度が高く、周期は2ミリ秒、実行時間は1ミリ秒である。Bの周期が10ミリ秒のとき、1周期中に実行を完了できるBの実行時間は最大何ミリ秒か。ここで、A、B以外のタスクはなく、タスク切替えによるオーバヘッドはないものとする。
選択肢
ア:3
イ:5(正解)
ウ:7
エ:9
🔒 解説は解答すると表示されます
周期タスクの実行可能時間【午前2解説】
正解の理由
10ミリ秒の間に、優先度の高いタスクAは周期2ミリ秒ごとに実行されます。Aは1回の実行に1ミリ秒かかるため、10ミリ秒間にAが使う時間は合計5ミリ秒です。
したがって、残りの時間はタスクBが使えます。
よって、Bが1周期内に実行を完了できる最大時間は5ミリ秒です。該当するのは イ です。
解法ステップ
- Bの1周期を確認します。Bの周期は10ミリ秒です。
- その間にAが何回実行されるかを求めます。
回です。 - Aの合計実行時間を求めます。
ミリ秒です。 - Bが使える時間を求めます。
ミリ秒です。
選択肢別の誤答解説
- ア:3ミリ秒
Aが使う時間を正しく計算できていません。Aは10ミリ秒の間に5回実行され、合計5ミリ秒を使います。 - イ:5ミリ秒
Aが使う5ミリ秒を、Bの周期10ミリ秒から差し引いた値です。 - ウ:7ミリ秒
Aの実行時間を合計3ミリ秒と見積もる計算ですが、Aは5回実行されるため、実際には5ミリ秒を使います。 - エ:9ミリ秒
Aの実行による影響をほとんど考慮していない値です。Aの実行時間を差し引く必要があります。
よくある誤解
- 周期10ミリ秒の中でAは4回だけ実行される
0ミリ秒から数えると、Aは0、2、4、6、8ミリ秒に実行されます。したがって5回です。10ミリ秒時点の次の実行は、次の周期に属します。 - 優先度が高いタスクは、周期全体を占有する
優先度が高くても、Aが実行するのは各回1ミリ秒です。それ以外の時間にはBが実行できます。 - プリエンプティブ方式では、タスク切替えの時間も差し引く
問題では切替えオーバヘッドがないと指定されています。そのため、AとBの実行時間だけを考えます。
補足コラム
AのCPU使用率は、実行時間を周期で割って求められます。
Bが1周期に5ミリ秒実行する場合、BのCPU使用率も次のとおり50%です。
合計使用率は100%となり、CPUの実行時間をAとBで使い切る計算になります。切替えオーバヘッドなどがないという条件が重要です。
FAQ
Q. AはBより優先度が高いので、BはAの実行後にしか動けませんか?
Aが実行中はBが動けませんが、Aが実行していない時間にはBが動けます。Bの実行は分割されてもよく、問題では1周期中に合計何ミリ秒実行できるかを求めています。
Aが実行中はBが動けませんが、Aが実行していない時間にはBが動けます。Bの実行は分割されてもよく、問題では1周期中に合計何ミリ秒実行できるかを求めています。
Q. Aの周期がBの周期のちょうど5分の1であることは関係しますか?
関係します。Bの1周期10ミリ秒の間に、Aが5回実行されると簡単に数えられます。
関係します。Bの1周期10ミリ秒の間に、Aが5回実行されると簡単に数えられます。
関連キーワード: プリエンプティブスケジューリング、優先度、周期タスク、CPU使用率

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

