システムアーキテクト試験 2024年 午前224


DBMSにおいて、デッドロックを検出するために使われるデータ構造はどれか。
資源割当表
時刻印順管理表
トランザクションの優先順管理表
待ちグラフ(正解)

解説

DBMSにおけるデッドロック検出のためのデータ構造【午前2 解説】

要点まとめ

  • 結論:デッドロック検出には「待ちグラフ」が用いられます。
  • 根拠:待ちグラフはトランザクション間の資源の待ち状態をグラフ構造で表現し、循環(サイクル)を検出することでデッドロックを判定します。
  • 差がつくポイント:資源割当表や時刻印順管理表は管理情報として重要ですが、デッドロックの検出には直接使われず、待ちグラフの理解が合否を分けます。

正解の理由

デッドロックは複数のトランザクションが互いに相手の資源解放を待つ状態で、これを検出するにはトランザクション間の待ち関係を可視化する必要があります。待ちグラフはノードにトランザクションを、エッジに「待ち状態」を表し、グラフにサイクルが存在すればデッドロックと判定します。したがって、デッドロック検出に最も適したデータ構造は「待ちグラフ」です。

よくある誤解

資源割当表は資源の割当状況を示すため、デッドロック検出に使うと思われがちですが、単独では待ち関係を表現できません。時刻印順管理表はスケジューリングに関係し、デッドロック検出とは直接関係ありません。

解法ステップ

  1. デッドロックの定義を確認する(トランザクション間の相互待ち状態)。
  2. 各選択肢の役割を整理する(資源割当表、時刻印順管理表など)。
  3. デッドロック検出に必要な情報は「待ち関係の可視化」であることを理解する。
  4. 待ちグラフがトランザクションの待ち関係をグラフで表現し、サイクル検出でデッドロックを判定することを確認する。
  5. 従って、正解は「待ちグラフ」であると判断する。

選択肢別の誤答解説

  • ア: 資源割当表
    資源の割当状況を示すが、トランザクション間の待ち関係を示さないためデッドロック検出には不十分。
  • イ: 時刻印順管理表
    トランザクションの実行順序管理に用いられ、デッドロック検出の役割は持たない。
  • ウ: トランザクションの優先順管理表
    優先度管理に関する情報であり、デッドロックの検出には直接関係しない。
  • エ: 待ちグラフ
    トランザクション間の待ち状態をグラフで表現し、サイクル検出によりデッドロックを判定できるため正解。

補足コラム

待ちグラフは「資源割当グラフ」とも呼ばれ、ノードはトランザクションや資源を表し、エッジは「待ち」や「割当」を示します。デッドロック検出アルゴリズムはこのグラフにサイクルがあるかどうかを判定し、サイクルがあればデッドロックが発生していると判断します。デッドロック回避や予防の手法と合わせて理解するとより効果的です。

FAQ

Q: 待ちグラフと資源割当表の違いは何ですか?
A: 資源割当表は資源の割当状況を示す表形式の情報で、待ちグラフはトランザクション間の待ち関係をグラフ構造で表現し、デッドロック検出に使います。
Q: デッドロック検出以外に待ちグラフは使われますか?
A: 主にデッドロック検出に特化したデータ構造ですが、トランザクションの依存関係分析にも応用されることがあります。

関連キーワード: デッドロック, 待ちグラフ, トランザクション管理, 資源割当表, DBMS, デッドロック検出
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ