エンベデッドシステムスペシャリスト 2020年 午前2 問09
問題文
リアルタイムOSで用いられる、タスクがデッドラインを必ず守るデッドラインスケジューリングでは、周期タスクを図のように次の四つのパラメタ()の組みで表現することができる。
二つのタスクX、Yを、という条件下で生成した場合、スケジュールが可能となるの組合せはどれか。ここで、タスクはX、Yの順に起動され、優先度はXの方が高い。また、スケジューリングはプリエンプティブ方式であり、OSのオーバヘッドは考慮しない。


選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
周期タスクの実行可能性判定【午前2解説】
正解の理由
各タスクは周期ごとに実行され、条件 、 なので、タスクは周期の開始時に起動し、次の周期の開始までに実行を終えればよいです。
1プロセッサで実行する周期タスクの総実行時間が、単位時間当たりにどれだけ必要かを表す利用率は、次の式で求められます。
利用率が1を超えると、必要な実行時間がプロセッサの処理能力を上回るため、スケジュールできません。選択肢を確認すると、イの利用率は
です。利用率だけでは実際に期限を守れるかまでは確定できませんが、イは次のようにスケジュールできます。
- 時刻0〜1:優先度の高いタスクXを実行
- 時刻1〜2:タスクYを実行
- 時刻2〜3:次に起動したタスクXを実行
- 時刻3〜4:実行するタスクなし
タスクXは周期2、タスクYは周期4で起動します。このスケジュールでは、XもYも各デッドラインまでに処理を完了できます。時刻4から同じスケジュールを繰り返せるため、イがスケジュール可能です。
解法ステップ
- なので、各タスクの周期 を選択肢の期限 から読み取ります。
- 各タスクの利用率 を求め、合計します。
- 合計が1を超える選択肢は、処理能力が足りないため除外します。
- 利用率が1以下の選択肢について、優先度と実行順序を確認し、各タスクがデッドラインまでに完了するかを確かめます。
選択肢別の誤答解説
よくある誤解
- 利用率が1以下なら必ず実行可能だと思う
利用率が1以下であることは、実行可能性を判断するための目安です。一般には、それだけで期限を守れるとは限らないため、実行順序も確認します。 - 期限 と周期 を別々に扱い忘れる
この問題では という条件があるため、選択肢の を周期 として利用率を計算できます。 - 優先度の高いタスクが常に先に完了すると考える
優先度の高いタスクは、起動後に実行中のタスクへ割り込めます。各タスクの実行時間と起動時刻を踏まえて、時系列で確認することが大切です。
補足コラム
この問題ではOSのオーバヘッドを考慮しないため、利用率の合計が1でも、プロセッサを空き時間なく使い続けるスケジュールが成立する場合があります。実際のシステムでは、タスク切替などのオーバヘッドも処理時間に加わるため、利用率に余裕を持たせる必要があります。
FAQ
Q. 利用率の合計が1を超えたら、なぜ実行できないのですか?
A. 長い時間で見ると、必要な処理時間がプロセッサの処理可能時間より多くなるためです。期限を守れないタスクが必ず生じます。
A. 長い時間で見ると、必要な処理時間がプロセッサの処理可能時間より多くなるためです。期限を守れないタスクが必ず生じます。
Q. 利用率の合計が1なら、必ず実行可能ですか?
A. 必ずとは限りません。タスクの起動時刻や優先度によっては期限を守れないことがあります。この問題では、実行順序を確認して期限内に完了することを確かめています。
A. 必ずとは限りません。タスクの起動時刻や優先度によっては期限を守れないことがあります。この問題では、実行順序を確認して期限内に完了することを確かめています。
関連キーワード: リアルタイムOS、周期タスク、デッドライン、タスク優先度、利用率、プリエンプティブスケジューリング

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

