応用情報技術者 2024年 春期 午前2 問16
問題文
ノンプリエンプティブ方式のタスクの状態遷移に関する記述として、適切なものはどれか。
選択肢
ア:OSは実行中のタスクの優先度を他のタスクよりも上げることによって、実行中のタスクが終了するまでタスクが切り替えられるのを防ぐ。
イ:実行中のタスクが自らの中断をOSに要求することによってだけ,OSは実行中のタスクを中断し、動作可能な他のタスクを実行中に切り替えることができる。(正解)
ウ:実行中のタスクが無限ループに陥っていることをOSが検知した場合,OSは実行中のタスクを終了させ、動作可能な他のタスクを実行中に切り替える。
エ:実行中のタスクより優先度が高い動作可能なタスクが実行待ち行列に追加された場合,OSは実行中のタスクを中断し、優先度が高い動作可能なタスクを実行中に切り替える。
ノンプリエンプティブ方式のタスクの状態遷移に関する問題【午前2 解説】
要点まとめ
- 結論:ノンプリエンプティブ方式では、タスクの切り替えは実行中タスク自身の中断要求によってのみ行われます。
- 根拠:OSが強制的にタスクを中断するプリエンプティブ方式と異なり、ノンプリエンプティブ方式はタスクの自発的な中断が前提です。
- 差がつくポイント:タスク切り替えのトリガーが「OSの強制」か「タスク自身の要求」かを正確に理解することが重要です。
正解の理由
イは「実行中のタスクが自らの中断をOSに要求することによってだけ、OSは実行中のタスクを中断し、動作可能な他のタスクを実行中に切り替えることができる」と述べています。これはノンプリエンプティブ方式の本質を正確に表現しています。ノンプリエンプティブ方式では、OSはタスクを強制的に中断せず、タスク自身が中断を要求しない限り切り替えが発生しません。
よくある誤解
ノンプリエンプティブ方式でもOSが優先度に基づいて強制的にタスクを切り替えると誤解されがちですが、これはプリエンプティブ方式の特徴です。
解法ステップ
- ノンプリエンプティブ方式の定義を確認する。
- タスク切り替えのトリガーが「タスク自身の中断要求」であることを理解する。
- 選択肢の中で「OSが強制的に中断する」記述を除外する。
- タスクの状態遷移に関する記述が正確かを検証する。
- イが最も正確な説明であると判断する。
選択肢別の誤答解説
- ア:実行中タスクの優先度を上げて切り替えを防ぐという記述は誤り。ノンプリエンプティブ方式は優先度による強制中断を行いません。
- イ:正解。タスク自身の中断要求によってのみ切り替えが行われることを正しく説明しています。
- ウ:OSが無限ループを検知して強制終了するのはプリエンプティブ方式の特徴であり、ノンプリエンプティブ方式では通常行いません。
- エ:優先度の高いタスクが来てもOSが強制的に切り替えないのがノンプリエンプティブ方式の特徴なので誤りです。
補足コラム
ノンプリエンプティブ方式は、タスクが自発的にCPUを手放すまで実行を続けるため、実装が単純でコンテキスト切り替えのオーバーヘッドが少ないという利点があります。一方で、実行中のタスクが長時間CPUを占有すると他のタスクが待たされる問題があります。プリエンプティブ方式はこの問題を解決するためにOSが強制的にタスクを切り替えます。
FAQ
Q: ノンプリエンプティブ方式でタスクが切り替わるタイミングは?
A: タスク自身が中断を要求したときのみ切り替わります。
A: タスク自身が中断を要求したときのみ切り替わります。
Q: プリエンプティブ方式との最大の違いは何ですか?
A: プリエンプティブ方式はOSが強制的にタスクを中断できるのに対し、ノンプリエンプティブ方式はタスク自身の中断要求が必要です。
A: プリエンプティブ方式はOSが強制的にタスクを中断できるのに対し、ノンプリエンプティブ方式はタスク自身の中断要求が必要です。
関連キーワード: ノンプリエンプティブ方式、タスク状態遷移、プリエンプティブ方式、CPUスケジューリング、タスク切り替え

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

