令和4年度 高度共通 午前I(PM試験) 問6
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
- ア 一方のタスクの優先度を高くする。
- イ 資源獲得の順序を両方のタスクで同じにする。
- ウ 資源獲得の順序を両方のタスクで逆にする。
- エ 両方のタスクの優先度を同じにする。
解答・解説を見る
正解:イ
AI解説
デッドロックは、2つのタスクが互いに相手の確保した資源の解放を待ち合って停止する現象である。両タスクが資源を同じ順序で獲得するようにすれば、片方が先に資源1を確保した時点でもう片方は資源1の解放を待つことになり、互いに待ち合う循環(循環待ち)が発生しないため、デッドロックを防止できる。したがってイが正しい。 ア: 優先度を高くしても資源の獲得順序は変わらず、互いの資源を待ち合う状況は防げない(優先度はCPUのスケジューリングの話である)。 イ: 正しい。獲得順序の統一により循環待ち条件が成立しなくなり、デッドロックを防止できる。 ウ: 逆順に獲得すると、タスクAが資源1、タスクBが資源2を確保した後に互いの資源を要求し合う典型的なデッドロックが発生しやすくなる。 エ: 優先度を同じにしても資源待ちの循環とは無関係であり、防止効果はない。 💡 「資源獲得順序を全タスクで統一」はデッドロック防止の定番解。デッドロック成立4条件(相互排除・保持と待ち・横取り不可・循環待ち)のうち循環待ちを崩す方法と理解する。
出典:令和4年度 秋期 プロジェクトマネージャ試験 午前I 問6 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。