SAシステムアーキテクト試験 午前Ⅱ

令和6年度春期 システムアーキテクト 午前Ⅱ 問24

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

DBMSにおいて,デッドロックを検出するために使われるデータ構造はどれか。

選択肢

  1. ア
    資源割当表
  2. イ
    時刻印順管理表
  3. ウ
    トランザクションの優先順管理表
  4. エ
    待ちグラフ
解き方のヒントを見る

競合を整理する一つの視点

同時実行の問題では、複数の処理が同じ資源や状態に関わる場面に注目し、処理の順序と待ち合わせが結果へ与える影響を、問題文の条件に沿って、各処理がどの時点で何を確認し、どの順序で進むか丁寧に整理しましょう。

この問題で問われていること

確認する観点は、共有される対象に対して各処理が行う操作の境界です。処理同士がどこで関係し、どの時点の状態を前提にするのかを、時系列に沿って一つずつ落ち着いて追いましょう。

視点

共有される対象と処理の関わりを切り分け、各処理の操作がどの時点で区切られているかを整理します。

確認ポイント

  • 共有対象と各処理の参照・変更範囲を区別できているか
  • 処理の開始から完了までの時点を時系列で並べられているか
  • ある処理の前提状態が別の処理と関係する箇所を確認したか
正解と解説を見る

正解

エ

解説

デッドロックは、トランザクション同士が互いに解放や処理の完了を待ち続ける状態です。その検出には、待機関係を頂点と辺で表す待ちグラフを用います。

理由

待ちグラフは、トランザクションを頂点として、あるトランザクションが別のトランザクションの処理完了やロック解放を待っている関係を辺で表します。グラフ上の閉路から、相互待ちによるデッドロックを検出できます。

比較

資源割当表は資源の割当状況を把握する表、時刻印順管理表は処理順序を管理する表、トランザクションの優先順管理表は優先順位を管理する表です。いずれも待機関係の閉路を直接表す構造ではありません。

選択肢ア

これは不正解だよ。資源割当表は、どの資源がどのトランザクションに割り当てられているかを管理するための表です。資源の状態確認には役立ちますが、トランザクション同士の待機関係を直接表してデッドロックを検出するデータ構造ではありません。

選択肢イ

これは不正解だよ。時刻印順管理表は、トランザクションに付与した時刻印などを基準に処理順序を管理するものです。デッドロック回避や直列化に関係する場合はありますが、相互に待っている関係を表す検出用の構造ではありません。

選択肢ウ

これは不正解だよ。トランザクションの優先順管理表は、処理の優先順位を管理するための表です。優先順位に基づく制御には使えますが、どのトランザクションが別のトランザクションを待っているかという関係を表すデータ構造ではありません。

選択肢エ(正解)

これは正解だよ。待ちグラフは、トランザクションを頂点として、あるトランザクションが別のトランザクションの処理完了やロック解放を待つ関係を辺で表します。グラフに閉路があると、相互待ちによるデッドロックを検出できます。

学習のポイント

待ちグラフでトランザクション間の待機関係を整理する。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度春期 システムアーキテクト試験 午前Ⅱ 問24(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針