ノンプリエンプティブ方式のタスク制御
出典: 令和6年度 春期 応用情報技術者試験 午前 問16 (IPA)
ノンプリエンプティブ方式のタスクの状態遷移に関する記述として,適切なものはどれか。
- ア OS は実行中のタスクの優先度を他のタスクよりも上げることによって,実行中のタスクが終了するまでタスクが切り替えられるのを防ぐ。
- イ 実行中のタスクが自らの中断を OS に要求することによってだけ,OS は実行中のタスクを中断し,動作可能な他のタスクを実行中に切り替えることができる。
- ウ 実行中のタスクが無限ループに陥っていることを OS が検知した場合,OS は実行中のタスクを終了させ,動作可能な他のタスクを実行中に切り替える。
- エ 実行中のタスクより優先度が高い動作可能なタスクが実行待ち行列に追加された場合,OS は実行中のタスクを中断し,優先度が高い動作可能なタスクを実行中に切り替える。
正解と解説を見る
正解: イ
- ア: 優先度を上げて切り替えを防ぐのではなく、ノンプリエンプティブ方式ではそもそも OS が強制的に切り替えません。
- イ: 実行中のタスク自身が中断を要求したときだけ OS が切り替えるという、ノンプリエンプティブ方式の記述です。正しい答えです。
- ウ: 無限ループを OS が検知して強制終了する機能の説明で、ノンプリエンプティブ方式の特徴ではありません。
- エ: 優先度の高いタスクが来たら実行中のタスクを中断するのは、プリエンプティブ方式 (優先度ベース) の記述です。
ポイント
- ノンプリエンプティブ方式: 実行中のタスクが 自分から CPU を手放す (終了、待ち状態への移行、中断要求など) まで、OS は切り替えをしません。
- プリエンプティブ方式: OS が優先度やタイムスライスによって、実行中のタスクを強制的に中断して切り替えます。