令和4年度 秋期 午前 問16
ソフトウェア
このデッドロックの発生を防ぐ方法
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
- ア一方のタスクの優先度を高くする。
- イ資源獲得の順序を両方のタスクで同じにする。
- ウ資源獲得の順序を両方のタスクで逆にする。
- エ両方のタスクの優先度を同じにする。
答えと解説を見る
✓ これが正解イ資源獲得の順序を両方のタスクで同じにする。
解説
取る順序をそろえると待ちの輪ができません。
設問は、2 つのタスクが 2 つの資源を排他的に使うときに起こりうるデッドロックを、どう防ぐかを選ばせています。軸になるのは、止まる原因が待ちの関係の輪だという点です。一方が先に片方の資源を確保してもう一方を待ち、他方が逆の順で確保して残りを待つと、互いに相手が離すのを待ち続けて進めなくなります。両方のタスクが同じ順序で資源を取ると決めておけば、先に確保できなかった側は何も持たないまま待つことになり、輪ができません。したがって、資源獲得の順序を両方のタスクで同じにするという記述が正解です。これは、待ちの関係が輪になるという条件を崩す手立てにあたります。
ほかの選択肢はなぜ違うのか
- ア一方のタスクの優先度を高くする。:どちらを先に走らせるかが変わるだけで、資源を確保したまま別の資源を待つという形は残ります。先に走る側が待ちに入れば、やはり互いに待ち合う状態になります。
- ウ資源獲得の順序を両方のタスクで逆にする。:取る順序をわざと食い違わせる形なので、互いに相手の持つ資源を待つ関係を自分から作ることになります。防ぐどころか、止まる状態を起こしやすくする向きです。
- エ両方のタスクの優先度を同じにする。:実行の順序づけをそろえるだけで、資源を確保する順番には手を付けていません。片方が先に一つを押さえ、他方が逆の側を押さえる余地はそのまま残ります。
出典:令和4年度 秋期 応用情報技術者試験 午前 問16
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)