応用情報技術者試験 令和4年秋 午前問16 解説付き過去問
問題
二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生するおそれがある。
このデッドロックの発生を防ぐ方法はどれか。
正解
解説
この問題は、二つのタスクが共用する二つの資源を排他的に使用する際に、デッドロックの発生を防ぐ方法に関するものです。
- デッドロックの基本概念
デッドロックとは、複数のプロセスがお互いに他のプロセスが保持する資源を要求しながら、それぞれが既に保持している資源を解放せずに無限に待ち続ける状態を指します。
デッドロックが発生する主な条件は、相互排他、保持と待機、非割り込み性、循環待ちの四つです。これらの条件が同時に成立する時、デッドロックが発生する可能性があります。 - 資源獲得の順序の統一
資源の獲得順序をタスク間で統一することは、デッドロックの発生を防ぐ効果的な方法の一つです。すべてのプロセスが資源を同じ順序で要求することによって、「循環待ち」条件を排除することができます。
例えば、二つのプロセスが資源Aと資源Bを使用する場合、両プロセスが先に資源Aを要求し、次に資源Bを要求する順序を守ると、片方のプロセスが資源Aを持ちながら資源Bを待つという状況が発生しないため、デッドロックのリスクが低減されます。
したがって、デッドロックを防ぐためには「資源獲得の順序を両方のタスクで同じにする」方法が最も適切です。このアプローチによって、プロセス間の循環待ち条件を排除し、デッドロックの可能性を減少させることができます。