令和6年度 春期 午前 問16
ソフトウェア
タスクの状態遷移に関する記述
ノンプリエンプティブ方式のタスクの状態遷移に関する記述として,適切なものはどれか。
- アOS は実行中のタスクの優先度を他のタスクよりも上げることによって,実行中のタスクが終了するまでタスクが切り替えられるのを防ぐ。
- イ実行中のタスクが自らの中断を OS に要求することによってだけ,OS は実行中のタスクを中断し,動作可能な他のタスクを実行中に切り替えることができる。
- ウ実行中のタスクが無限ループに陥っていることを OS が検知した場合,OS は実行中のタスクを終了させ,動作可能な他のタスクを実行中に切り替える。
- エ実行中のタスクより優先度が高い動作可能なタスクが実行待ち行列に追加された場合,OS は実行中のタスクを中断し,優先度が高い動作可能なタスクを実行中に切り替える。
答えと解説を見る
✓ これが正解イ実行中のタスクが自らの中断を OS に要求することによってだけ,OS は実行中のタスクを中断し,動作可能な他のタスクを実行中に切り替えることができる。
解説
タスクが自ら手放すまで切り替わりません。
設問は、ノンプリエンプティブ方式におけるタスクの状態遷移の記述を選ばせています。軸になるのは、切替えの引き金を誰が引くのかという一点です。プリエンプトという語は横取りを意味しますから、ノンプリエンプティブとは、実行中のタスクを横取りしないという意味になります。したがって、実行中のタスクが自らの中断を要求することによってだけ、動作可能なほかのタスクへ切り替わります。入出力の待ちに入るときや、処理を終えたときに、タスクが自分で処理装置を返すわけです。裏を返せば、タスクが返さないかぎり、ほかは待たされ続けます。四つの記述を、切替えを決めたのが誰かという主語で読み分けると、タスク自身が主語になっているものは一つしかありません。用語の意味を思い出せなくても、語の分解だけで届く型です。
ほかの選択肢はなぜ違うのか
- アOS は実行中のタスクの優先度を他のタス…:優先度を上げて切替えを防ぐという手立ては、横取りが起きる方式の中でのやりくりです。そもそも取り上げられないのであれば、優先度をいじって守る必要がありません。結論の部分だけでなく、手段の側まで読みます。
- ウ実行中のタスクが無限ループに陥っているこ…:無限ループを検知して実行中のものを終了させるのは、取り上げる働きそのものです。この方式の弱点は、まさにそこで手が出せず、一つの暴走が全体を止めてしまう点にあります。
- エ実行中のタスクより優先度が高い動作可能な…:優先度の高いものが待ち行列に加わったことを引き金として中断させるのは、優先度による横取りの定義そのものです。この方式とは真っ向から反対の動きになります。
出典:令和6年度 春期 応用情報技術者試験 午前 問16
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)