過去問解きまくり研究所 ホーム

平成26年度 秋期 午前 問16

ソフトウェア

デッドロックに関する問題

三つの資源 X 〜 Z を占有して処理を行う四つのプロセス A 〜 D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A とデッドロックを起こす可能性があるプロセスはどれか。

〔資源の占有順序〕

プロセス : 資源 X / 資源 Y / 資源 Z
   A     :   1   /   2   /   3
   B     :   1   /   2   /   3
   C     :   2   /   3   /   1
   D     :   3   /   2   /   1
答えと解説を見る

✓ これが正解イC,D

解説

取りに行く順が食い違う相手だけが危ないです。

表に並んだ数値は資源の個数ではなく、占有していく順番を表しています。ですからまず、表を、資源を取る順の並びに書き直します。プロセス A は X、Y、Z の順、プロセス B も X、Y、Z の順、プロセス C は Z、X、Y の順、プロセス D は Z、Y、X の順になります。デッドロックが起きるのは、二者が資源を取りに行く順が食い違い、互いに相手が握っているものを待つ輪ができたときだけです。そこで A と C を突き合わせます。A が X を押さえ、C が Z を押さえた状況を考えると、A は Y を取ったあと Z を要求しますが、それは C が握っています。いっぽう C は次に X を要求しますが、それは A が握っています。互いに待つ形になり、可能性があると分かります。A と D も同じで、A が Z を要求した時点で D がそれを握っており、D は Y を要求して A が握っている、という輪ができます。したがって該当するのは C と D の二つです。排他制御の一般則として、すべてのプロセスが資源を同じ順序で取る決まりにすれば輪は作れない、という形でも同じ結論になります。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成26年度 秋期 応用情報技術者試験 午前 問16

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)