プリエンプティブな優先度ベースのスケジューリングで実行する二つの周期タスクA及びBがある。
タスクBが周期内に処理を完了できるタスクA及びBの最大実行時間及び周期の組合せはどれか。
ここで,タスクAの方がタスクBより優先度が高く,かつ,タスクAとBの共有資源はなく,タスク切替え時間は考慮しないものとする。
また,時間及び周期の単位はミリ秒とする。
正答1
解説
正解は1です。
プリエンプティブな優先度ベースのスケジューリングでは、優先度の高いタスクAが実行可能になると、実行中のタスクBを中断してAを実行します。
各組合せで、時刻0にAとBが同時に起動したとして、Bが自分の周期内に処理を終えられるかを時間を追って確かめます。
【計算】
選択肢1は、Aが0〜2ミリ秒に実行し、Bが2〜4ミリ秒に2ミリ秒分実行します。
4ミリ秒でAが再び起動して4〜6ミリ秒に実行し、Bは6〜7ミリ秒に残り1ミリ秒を実行します。
Bは7ミリ秒で完了し、周期8ミリ秒以内に終わります。
選択肢2は、Aが0〜3、Bが3〜6(3ミリ秒分)、Aが6〜9に実行します。
Bの残り1ミリ秒は9〜10に実行され、周期9ミリ秒を超えます。
選択肢3は、Aが0〜3、Bが3〜5、Aが5〜8、Bが8〜10、Aが10〜13に実行します。
Bはこの時点で4ミリ秒分しか終えておらず、周期13ミリ秒を超えます。
選択肢4は、Aが0〜4、Bが4〜6、Aが6〜10、Bが10〜12、Aが12〜16に実行します。
Bは15ミリ秒の時点で4ミリ秒分しか終えておらず、周期15ミリ秒を超えます。
【選択肢別解説】
1:○ Bは7ミリ秒で処理を終え、周期8ミリ秒に間に合います。
2:× Bの完了は10ミリ秒となり、周期9ミリ秒に間に合いません。
3:× Bの完了は14ミリ秒となり、周期13ミリ秒に間に合いません。
4:× Bは15ミリ秒までに4ミリ秒分しか実行できず、周期15ミリ秒に間に合いません。
【ポイント】
プリエンプティブ方式では、低優先度のタスクは高優先度のタスクが空けた時間しか使えません。
時間軸を1ミリ秒単位で区切り、どちらのタスクが実行しているかを順に書き出すのが確実な解き方です。