優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。
Aの方がBよりも優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
正答3
解説
正解は3です。
プリエンプティブなスケジューリングでは、優先度の高いタスクが実行できる状態になると、実行中の低い優先度のタスクからCPUを奪って実行します。
CPUを奪われたタスクは、CPUが空けばすぐ動ける実行可能状態に戻ります。
【選択肢別解説】
1:× Aの実行中に優先度の低いBが起動しても、Aが中断されることはありません。
Bは実行可能状態で待ち、Aの実行が続きます。
2:× 1と同じく、優先度の低いBの起動でAが止められることはありません。
また、待ち状態は入出力の完了などの事象を待つ状態であり、この場面には当てはまりません。
3:○ Bの実行中に優先度の高いAが起動すると、OSはBからCPUを奪って実行可能状態にし、Aを実行します。
これがプリエンプション(横取り)です。
4:× Bは事象を待っているわけではなく、CPUさえ割り当てられればすぐ実行できます。
そのためBは待ち状態ではなく、実行可能状態に移されます。
【ポイント】
タスクの状態は「実行状態」「実行可能状態」「待ち状態」の3つです。
CPUを奪われたら実行可能状態、入出力などの完了を待つなら待ち状態と区別します。