令和5年度 秋期 高度試験 午前I 問6

プリエンプティブな優先度ベースのスケジューリングで実行する二つの周期タスクA及びBがある。タスクBが周期内に処理を完了できるタスクA及びBの最大実行時間及び周期の組合せはどれか。ここで,タスクAの方がタスクBより優先度が高く,かつ,タスクAとBの共有資源はなく,タスク切替え時間は考慮しないものとする。また,時間及び周期の単位はミリ秒とする。

解答・解説

正解: ア.

正解の根拠

プリエンプティブな優先度ベースのスケジューリングでは、優先度の高いタスクが実行可能になると、実行中の優先度の低いタスクを中断(プリエンプション)して実行されます。
タスクAはタスクBより優先度が高いため、TBT_B の間に発生するタスクAの実行時間の合計と、タスクB自身の実行時間の和が TBT_B 以下であれば、タスクBは自身の周期 TBT_B 内に処理を完了できます。

各タスクの最大実行時間を CA,CBC_A, C_B、周期を TA,TBT_A, T_B とします。
期間 TBT_B 内にタスクAが起動する最大回数は ⌈TB/TA⌉\lceil T_B / T_A \rceil(切り上げ)となります。
したがって、タスクBが完了できる条件(十分条件)は以下のようになります。
⌈TB/TA⌉×CA+CB≤TB\lceil T_B / T_A \rceil \times C_A + C_B \le T_B

この式は周期の終わりにはみ出すタスクAの実行も丸ごと数える安全側の見積もりなので、満たさないときは、周期内で実際にタスクAが使う時間を数えて確かめます(イ・ウは周期内に始まるタスクAの実行がすべて周期内に終わるので、見積もりと実際が一致します)。

各選択肢の解説

  • ア: 正解。タスクAが周期4で2ミリ秒実行、タスクBが周期8で3ミリ秒実行。
    • 周期8ミリ秒の間にタスクAは最大2回(⌈8/4⌉\lceil 8/4 \rceil)起動します。
    • タスクAの実行時間の合計は 2×2=42 \times 2 = 4 ミリ秒。
    • タスクBの実行時間と合わせると 4+3=74 + 3 = 7 ミリ秒となり、周期8ミリ秒以内に完了できます。
  • イ: 誤り。タスクAが周期6で3ミリ秒実行、タスクBが周期9で4ミリ秒実行。
    • 周期9ミリ秒の間にタスクAは最大2回(⌈9/6⌉\lceil 9/6 \rceil)起動します。
    • タスクAの実行時間の合計は 3×2=63 \times 2 = 6 ミリ秒。
    • タスクBの実行時間と合わせると 6+4=106 + 4 = 10 ミリ秒となり、周期9ミリ秒を超過するため完了できません。
  • ウ: 誤り。タスクAが周期5で3ミリ秒実行、タスクBが周期13で5ミリ秒実行。
    • 周期13ミリ秒の間にタスクAは最大3回(⌈13/5⌉\lceil 13/5 \rceil)起動します。
    • タスクAの実行時間の合計は 3×3=93 \times 3 = 9 ミリ秒。
    • タスクBの実行時間と合わせると 9+5=149 + 5 = 14 ミリ秒となり、周期13ミリ秒を超過するため完了できません。
  • エ: 誤り。タスクAが周期6で4ミリ秒実行、タスクBが周期15で5ミリ秒実行。
    • 周期15ミリ秒の間にタスクAは最大3回(⌈15/6⌉\lceil 15/6 \rceil)起動します。
    • 3回目(12〜16ミリ秒)のうち周期15ミリ秒以内は3ミリ秒なので、周期内のタスクAの実行時間の合計は 4+4+3=114 + 4 + 3 = 11 ミリ秒。
    • タスクBの実行時間と合わせると 11+5=1611 + 5 = 16 ミリ秒となり、周期15ミリ秒を超過するため完了できません。

Spineチーム