優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。
Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
正答3
解説
正解は3です。
この問題は、優先度に基づくプリエンプティブなスケジューリングの動作を問うています。
プリエンプティブとは、実行中のタスクをOSが途中で中断し、別のタスクに実行権を移せることです。
優先度方式では、より優先度の高いタスクが実行できるようになると、低いタスクの実行を中断して高いタスクを実行します。
中断されたタスクは、すぐに再開できる実行可能状態に戻ります。
【選択肢別解説】
1:× Bは優先度がAより低いので、Bが起動されてもAは中断されません。
Aが実行を続け、Bは実行可能状態で順番を待ちます。
2:× 1と同様に、優先度の低いBに起動がかかってもAが中断されることはありません。
また、待ち状態は入出力の完了などを待つ状態であり、中断の結果として移る状態ではありません。
3:○ 優先度の高いAに起動がかかると、実行中のBは中断されて実行可能状態に戻り、Aが実行されます。
Bは、Aの実行が終わるか待ち状態になると、再び実行されます。
4:× Bを待ち状態にする点が誤りです。
Bは入出力などを待っているわけではなく、いつでも再開できるので、実行可能状態に戻ります。
【ポイント】
タスクの状態は、実行状態、実行可能状態、待ち状態の3つです。
横取り(プリエンプション)された場合は実行可能状態へ、入出力待ちなどの場合は待ち状態へ移ると区別します。