応用情報技術者試験 応用情報技術者試験 平成31年度春期 午前 問18: 二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
72.35%
問題本文
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
選択肢
- ア.一方のタスクの優先度を高くする。
- イ.資源獲得の順序を両方のタスクで同じにする。
- ウ.資源獲得の順序を両方のタスクで逆にする。
- エ.両方のタスクの優先度を同じにする。
正解
イ. 資源獲得の順序を両方のタスクで同じにする。
解説
デッドロックが発生する仕組みと、その防止策を問う問題である。デッドロックは、2 つのタスクが資源を互いに逆の順序で確保しようとし(一方は資源1→資源2、他方は資源2→資源1)、それぞれが相手の持つ資源の解放を待ち続けることで起こる。これを防ぐには資源を獲得する順序を両方のタスクで統一すればよく、先に資源を取れた側が両方を確保して処理を終え解放するため待ち合いの循環が生じない。よってイが正解である。
選択肢ごとの解説
- ア.一方の優先度を高くしても、両タスクが資源を逆順に要求する状況自体は残るためデッドロックを防げない。
- イ.資源獲得の順序を両タスクで同じにすれば、循環的な待ち合いが生じなくなりデッドロックを根本から防げるので正しい。
- ウ.獲得順序を逆にすることはまさにデッドロックを引き起こす原因であり、防止策としては正反対で誤り。
- エ.優先度を同じにしても、資源を逆順に要求して互いに待ち合う状況は防げないためデッドロックは起こりうる。
応用情報技術者試験 平成31年度春期 午前 の過去問一覧へ戻る・問18