応用情報技術者 2014年 秋期 午前2 問16
問題文
三つの資源X〜Zを占有して処理を行う四つのプロセスA〜Dがある。各プロセスは処理の進行に伴い、表中の数値の順に資源を占有し、実行終了時に三つの資源を一括して解放する。プロセスAとデッドロックを起こす可能性があるプロセスはどれか。

選択肢
ア:B, C, D
イ:C, D(正解)
ウ:Cだけ
エ:Dだけ
三つの資源を占有するプロセスのデッドロック判定【午前2 解説】
要点まとめ
- 結論:プロセスAとデッドロックを起こす可能性があるのはプロセスCとDです。
- 根拠:デッドロックは資源の占有順序が循環依存を生む場合に発生し、AはX→Y→Zの順で占有するため、これと逆順や循環する順序のC(Y→Z→X)とD(Z→Y→X)が該当します。
- 差がつくポイント:資源の占有順序の違いを正確に理解し、循環待ちの関係が成立するかを見極めることが重要です。
正解の理由
プロセスAは資源X→Y→Zの順に占有します。
- プロセスCはY→Z→Xの順で占有し、AがXを保持している間にCはXを待つ可能性があります。
- プロセスDはZ→Y→Xの順で占有し、AがYやZを保持している間にDがそれらを待つ可能性があります。
このため、AとC、AとDの間で資源の循環待ちが発生し、デッドロックの可能性があります。
一方、プロセスBはAと同じ順序(X→Y→Z)で資源を占有するため、循環待ちは発生しません。
よくある誤解
資源の占有順序が同じならデッドロックは起きないと考えがちですが、異なる順序で占有するプロセス間でのみ循環待ちが発生します。
また、単に資源を共有しているだけではなく、占有順序の循環性を正しく理解する必要があります。
また、単に資源を共有しているだけではなく、占有順序の循環性を正しく理解する必要があります。
解法ステップ
- 各プロセスの資源占有順序を確認する。
- プロセスAの占有順序(X→Y→Z)を基準に他のプロセスの順序と比較する。
- 循環待ちが発生するか、つまりAが保持する資源を他が待ち、かつ他が保持する資源をAが待つ関係があるかを検証する。
- 循環待ちが成立するプロセスを抽出する。
- 選択肢と照合し、正解を決定する。
選択肢別の誤答解説
- ア: B, C, D
BはAと同じ順序で資源を占有するため、デッドロックは起きません。 - イ: C, D
正解。CとDはAと逆の順序で資源を占有し、循環待ちが発生します。 - ウ: Cだけ
DもAとデッドロックを起こす可能性があるため不正解です。 - エ: Dだけ
Cも同様にデッドロックの可能性があるため不正解です。
補足コラム
デッドロックは「相互排他」「保持と待ち」「非奪取」「循環待ち」の4条件が同時に成立した場合に発生します。
資源の占有順序を統一することで循環待ちを防ぎ、デッドロック回避策として有効です。
また、資源の一括解放はデッドロックの解消に寄与しますが、発生自体を防ぐわけではありません。
資源の占有順序を統一することで循環待ちを防ぎ、デッドロック回避策として有効です。
また、資源の一括解放はデッドロックの解消に寄与しますが、発生自体を防ぐわけではありません。
FAQ
Q: なぜ同じ順序で資源を占有するプロセス間ではデッドロックが起きないのですか?
A: 同じ順序で資源を占有すると、循環待ちが発生しにくく、資源の奪い合いが順序良く解消されるためです。
A: 同じ順序で資源を占有すると、循環待ちが発生しにくく、資源の奪い合いが順序良く解消されるためです。
Q: 資源を一括解放することはデッドロック防止に効果がありますか?
A: 一括解放はデッドロックの解消を助けますが、発生を防ぐには占有順序の管理など他の対策が必要です。
A: 一括解放はデッドロックの解消を助けますが、発生を防ぐには占有順序の管理など他の対策が必要です。
関連キーワード: デッドロック、資源占有順序、循環待ち、プロセス同期、資源管理

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

