令和5年度 秋期 応用情報技術者試験 午前 問17

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

解答・解説

正解: ア.

正解の根拠

プリエンプティブなスケジューリングでは、優先度の高いタスクが実行可能になると、現在実行中の優先度の低いタスクは中断され、高いタスクにCPUが割り当てられます。
本問では、タスクAの方がタスクBよりも優先度が高いため、タスクBが自身の1周期の間に処理を完了できるかを考えるには、タスクBの周期内にタスクAが何回割り込んで実行されるかを計算する必要があります。

最悪のケース(タスクBの開始と同時にタスクAも開始する場合)において、タスクBの1周期(TBT_B)内にタスクAが発生する回数は ⌈TB/TA⌉\lceil T_B / T_A \rceil(切り上げ)となります。
タスクBの1周期の中でタスクBが利用可能なCPU時間は、周期内に始まるタスクAの実行をすべて丸ごと差し引くと、以下の式で見積もれます。

利用可能時間=TB−⌈TBTA⌉×CA \text{利用可能時間} = T_B - \lceil \frac{T_B}{T_A} \rceil \times C_A

(※ TAT_A: タスクAの周期、CAC_A: タスクAの最大実行時間、TBT_B: タスクBの周期、CBC_B: タスクBの最大実行時間)
この利用可能時間がタスクBの最大実行時間(CBC_B)以上であれば、タスクBは周期内に完了できます。ただし、この式は周期の終わりにはみ出すタスクAの実行も丸ごと差し引く安全側の見積もりなので、下回るときは、周期内で実際にタスクAが使う時間を数えて確かめます(イ・ウは周期内に始まるタスクAの実行がすべて周期内に終わるので、見積もりと実際が一致します)。

各選択肢の解説

  • ア(正解)

    • タスクBの周期内にタスクAが発生する回数: ⌈8/4⌉=2\lceil 8 / 4 \rceil = 2 回
    • タスクAに奪われる時間: 2×2=42 \times 2 = 4
    • タスクBの利用可能時間: 8−4=48 - 4 = 4
    • 利用可能時間 (44) ≥\ge タスクBの最大実行時間 (33) となるため、周期内に完了できます。
  • イ(誤り)

    • タスクBの周期内にタスクAが発生する回数: ⌈9/6⌉=2\lceil 9 / 6 \rceil = 2 回
    • タスクAに奪われる時間: 2×3=62 \times 3 = 6
    • タスクBの利用可能時間: 9−6=39 - 6 = 3
    • 利用可能時間 (33) << タスクBの最大実行時間 (44) となるため、完了できません。
  • ウ(誤り)

    • タスクBの周期内にタスクAが発生する回数: ⌈13/5⌉=3\lceil 13 / 5 \rceil = 3 回
    • タスクAに奪われる時間: 3×3=93 \times 3 = 9
    • タスクBの利用可能時間: 13−9=413 - 9 = 4
    • 利用可能時間 (44) << タスクBの最大実行時間 (55) となるため、完了できません。
  • エ(誤り)

    • タスクBの周期内にタスクAが発生する回数: ⌈15/6⌉=3\lceil 15 / 6 \rceil = 3 回
    • タスクAに奪われる時間: 3回目(時刻12〜16)のうち周期内は3だけなので、4+4+3=114 + 4 + 3 = 11
    • タスクBの利用可能時間: 15−11=415 - 11 = 4
    • 利用可能時間 (44) << タスクBの最大実行時間 (55) となるため、完了できません。

Spineチーム