プリエンプション方式のタスクスケジューリングにおいて,タスクBの実行中にプリエンプションが発生する契機となるのはどれか。
ここで,タスクの優先度は,タスクAが最も高く,タスクA>タスクB=タスクC>タスクDの関係とする。
正答1
解説
正解は1です。
この問題は、優先度に基づくプリエンプション方式で、実行中のタスクBがCPUを奪われる契機を問うています。
プリエンプション方式では、実行中のタスクより優先度の高いタスクが実行可能状態になると、実行中のタスクは中断されて実行可能状態に戻ります。
優先度はタスクA>タスクB=タスクC>タスクDです。
【選択肢別解説】
1:○ タスクAはタスクBより優先度が高いので、Aが実行可能状態になると、Bは中断されてAにCPUが割り当てられます。
これがプリエンプションです。
2:× タスクBが待ち状態になるのは、入出力待ちなどでB自身がCPUを手放す場合です。
他のタスクに強制的に奪われるわけではないので、プリエンプションには当たりません。
3:× タスクCはタスクBと優先度が同じです。
同じ優先度のタスクが実行可能になっても、実行中のBは中断されず、Cは実行可能状態のまま待ちます。
4:× タスクDはタスクBより優先度が低いので、実行可能状態になってもBを中断させることはありません。
【ポイント】
プリエンプションは「より高い優先度のタスクの出現」によって起こります。
自ら待ち状態に移るのは、プリエンプションではなく自発的なCPUの解放です。