デッドロックとは?デッドロック
デッドロックとは、複数の処理が互いの持つ資源の解放を待ち合い、外から手を入れない限り永久に動かなくなる状態。相互排除・保持と待ち・横取り不可・循環待ちの4条件がそろったときにだけ成立し、どれか1つを崩せば起こらない。多くのDBMSは検出後に片方を強制的に巻き戻して解消する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
排他制御は同時実行の正しさを守るために資源を独占させる仕組みで、独占する以上は待ちが生まれる。待ちの向きがばらばらだと輪ができ、正しさを守った結果としてシステムが止まる。設計側はどの条件を崩すかを選ぶことになり、確保の順序を全体で統一して循環待ちを潰すのが、並行度への影響がもっとも小さい。
具体例
口座間振替で、A→Bの処理が口座A、B→Aの処理が口座Bを先にロックすると輪ができる。口座番号の小さい順にロックすると決めておけば、どちらも同じ向きに確保するため輪が生じない。Oracle Databaseはこの状態を検出するとORA-00060で片方を中断する。
試験での引っ掛け
待ちグラフの閉路で検出する点と、閉路の外から閉路内のトランザクションを待っている処理も巻き添えで止まる点。またDBMSが自動で片方を中断しても、中断された側を再実行する作りをアプリに入れていなければ、業務としては失敗したままになる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問2(IPA)解説で登場
並列に生起する事象間の同期を表現することが可能な、ソフトウェアの要求モデルはどれか。
正解:ペトリネットモデル
要点:ペトリネットは並行事象の同期を表現できるモデル
ペトリネットは、プレース(状態)とトランジション(事象)、その間を移動するトークンでモデルを表す。一つのトランジションが複数の入力プレースにトークンが揃うまで発火しないという性質により、並行して進む複数の事象の合流や同期を自然に表現できる。デッドロックの検出など解析にも用いられる。
出典:令和6年度 春期 システムアーキテクト試験 午前Ⅱ 問24(IPA)
DBMS において、デッドロックを検出するために使われるデータ構造はどれか。
正解:待ちグラフ
要点:待ちグラフの閉路の有無でデッドロックを検出する
待ちグラフは、トランザクションを頂点とし、あるトランザクションが別のトランザクションの保持するロックの解放を待っている関係を有向辺で表したものである。このグラフに閉路が現れれば互いに待ち合う状態、すなわちデッドロックが発生していると判定できる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 1. データベース方式 > (2) データベース管理システムに掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。