平成26年度 秋期 応用情報技術者試験 午前 問16
テクノロジ/ソフトウェア三つの資源 X〜Z を占有して処理を行う四つのプロセス A〜D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A とデッドロックを起こす可能性があるプロセスはどれか。 〔資源の占有順序〕 プロセス A:資源X=1,資源Y=2,資源Z=3 プロセス B:資源X=1,資源Y=2,資源Z=3 プロセス C:資源X=2,資源Y=3,資源Z=1 プロセス D:資源X=3,資源Y=2,資源Z=1 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成26年度 秋期 応用情報技術者試験 午前 問16
- アB,C,D
- イC,D
- ウCだけ
- エDだけ
正解:イ
解説
プロセスAは資源をX→Y→Zの順に占有します。プロセスBもAと全く同じ順序(X→Y→Z)で占有するため,Aと資源の取り合いになってもどちらかが先に全資源を確保でき,デッドロックには至りません。プロセスCとDはXYZの占有順序がAと逆行する部分(Z→X→Y,Z→Y→Xに相当する構造)を含むため,互いに資源を先に一部確保した状態で待ち合ってしまい,デッドロックを起こす可能性があります。
選択肢ごとの解説
- ア誤り。Bは資源をAと全く同じ順序(X→Y→Z)で占有するため,Aとの間でデッドロックは発生しません。
- イ正しい。CとDは占有順序がAと交差するため,互いに資源を待ち合ってデッドロックを起こす可能性があります。
- ウ誤り。デッドロックの可能性があるのはCだけでなくDも該当します。
- エ誤り。デッドロックの可能性があるのはDだけでなくCも該当します。