平成31年度 春期 午前 問18
ソフトウェア
このデッドロックの発生を防ぐ方法
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
- ア一方のタスクの優先度を高くする。
- イ資源獲得の順序を両方のタスクで同じにする。
- ウ資源獲得の順序を両方のタスクで逆にする。
- エ両方のタスクの優先度を同じにする。
答えと解説を見る
✓ これが正解イ資源獲得の順序を両方のタスクで同じにする。
解説
資源を取りに行く順序を、両方のタスクで揃えます。
デッドロックは、両方のタスクが自分のすでに握った資源を離さず、相手が握っているもう一方の資源を待ち続ける状態で成立します。原因の一つは、資源を取りに行く順序が両者で食い違い、互いに相手の待つ資源をすでに握ってしまう組み合わせが生じることです。順序を全てのタスクで統一しておくと、先に取りに行った側が両方を握り、後から取りに行く側は最初の資源の段階で待たされます。待たされた側は自分がまだ何も握っていないため、相手の解放を待つだけで済み、循環した待ちの関係が作られません。設問の四つの中で、この循環そのものを断つ働きを持つのは、順序をそろえる方法だけです。
ほかの選択肢はなぜ違うのか
- ア一方のタスクの優先度を高くする。:片方のタスクの優先度を高くする調整は、実行の順番を制御するだけで、資源の取り合いの構造そのものは変わりません。高い側が先に走っても、後回しになった側で握り合いが残り、待ちの循環が生まれ得ます。
- ウ資源獲得の順序を両方のタスクで逆にする。:資源を取りに行く順序を両者で逆にする組み合わせは、まさに握り合いを引き起こす条件です。互いに相手の待つ資源をすでに握った状態が作られやすくなり、循環する待ちを助長します。
- エ両方のタスクの優先度を同じにする。:両方のタスクの優先度を同じにすると、走る順番の決まり方が変わるだけで、資源の取りに行き方は変わりません。順番が入れ替わりうる分だけ、握り合いの発生条件はむしろ残ります。
出典:平成31年度 春期 応用情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)