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

選択肢
ア:B, C, D
イ:C, Dだけ(正解)
ウ:Bだけ
エ:Dだけ
三つの資源X〜Zを占有するプロセスのデッドロック判定【午前2 解説】
要点まとめ
- 結論:プロセスAとデッドロックを起こす可能性があるのはプロセスCとDだけです。
- 根拠:デッドロックは資源の占有順序が循環依存を形成する場合に発生し、AはX→Y→Zの順に占有するため、逆順に資源を要求するCとDが該当します。
- 差がつくポイント:資源の占有順序の違いを正確に理解し、循環待ちの関係を見抜くことが重要です。
正解の理由
プロセスAは資源X→Y→Zの順に占有します。一方、プロセスCはX→Y→Zの順序が2→3→1、つまりY→Z→Xの順に占有し、プロセスDは3→2→1、つまりZ→Y→Xの順に占有します。
このため、AとC、AとDは資源の占有順序が逆方向であり、互いに相手の資源を待つ状態(循環待ち)が発生しやすく、デッドロックの可能性があります。
一方、プロセスBはAと同じ順序(X→Y→Z)で資源を占有するため、デッドロックは起きません。
このため、AとC、AとDは資源の占有順序が逆方向であり、互いに相手の資源を待つ状態(循環待ち)が発生しやすく、デッドロックの可能性があります。
一方、プロセスBはAと同じ順序(X→Y→Z)で資源を占有するため、デッドロックは起きません。
よくある誤解
資源の番号だけを見て「同じ資源を使うからデッドロック」と考えがちですが、重要なのは占有順序の違いであり、順序が同じならデッドロックは起きません。
解法ステップ
- 各プロセスの資源占有順序を確認する。
- プロセスAの占有順序(X→Y→Z)を基準にする。
- 他のプロセスの占有順序がAと逆方向かどうかを調べる。
- 逆方向の順序を持つプロセスがデッドロックの可能性がある。
- 該当するプロセスを選択肢から選ぶ。
選択肢別の誤答解説
- ア: B, C, D
BはAと同じ順序なのでデッドロックは起きません。誤りです。 - イ: C, Dだけ
正解。CとDはAと逆順の資源占有でデッドロックの可能性があります。 - ウ: Bだけ
BはAと同じ順序なのでデッドロックは起きません。誤りです。 - エ: Dだけ
Cも逆順なのでデッドロックの可能性があります。誤りです。
補足コラム
デッドロックは「相互排他」「保持と待ち」「非奪取」「循環待ち」の4条件が同時に成立すると発生します。資源の占有順序を統一することで循環待ちを防ぎ、デッドロック回避が可能です。
FAQ
Q: なぜ資源の占有順序が重要なのですか?
A: 占有順序が異なると、プロセス間で資源の取り合いが循環的になり、デッドロックが発生しやすくなるためです。
A: 占有順序が異なると、プロセス間で資源の取り合いが循環的になり、デッドロックが発生しやすくなるためです。
Q: 同じ資源を使っていてもデッドロックが起きない場合は?
A: 資源の占有順序が同じなら、プロセスは順番に資源を取得できるため、デッドロックは起きません。
A: 資源の占有順序が同じなら、プロセスは順番に資源を取得できるため、デッドロックは起きません。
関連キーワード: デッドロック、資源占有順序、循環待ち、プロセス同期、資源管理

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

