デッドロックとは?でっどろっく
デッドロックとは、複数のタスクが互いに相手の保持する資源を待ち続け、いずれも先へ進めなくなる状態。相互排他・保持と待ち・横取り不可・循環待ちの4条件がすべて成立したときに発生し、裏返せばどれか一つを崩せば起きない。組込みでは資源の獲得順序を全タスクで統一して循環待ちを消すのが、最も実務的な予防策になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
排他制御は、資源を一度に一つのタスクへ限ることで矛盾を防ぐ仕組みである。ところが守るべき資源が複数になった途端、Aを持ったままBを待つという組合せが生まれ、相手が逆順で持っていれば双方が永久に止まる。矛盾を防ぐために入れた仕組みが、使う順序次第で全体を止めてしまう——この裏返しを類型化したのが4条件である。
具体例
タスクAがセマフォ1→2の順、タスクBが2→1の順で獲得する設計だと、双方が1つ目だけを取った時点で膠着する。全タスクで獲得順序を番号の昇順に統一すれば循環待ちが消える。タイムアウト付きの獲得(TOPPERSのtwai_semなど)で検出する手もある。
試験での引っ掛け
2つのセマフォの取得順序が逆になっている区間を指摘させる出題が頻出で、順序が同じなら発生しない。互いに譲り合って状態は変わるのに仕事が進まないライブロックや、優先度の低いタスクがいつまでも実行されない飢餓とは区別する。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6(IPA)
優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX,Yがある。X…
正解:処理B
要点:取得順序が逆の2つのセマフォを片方だけ持つ区間が危険
デッドロックはXとYが互いに相手の持つセマフォを待ち合うときに起きる。Xはiを取得した直後、まだoを取得していない状態にあるときプリエンプトされると危険で、これが処理Bの区間である。この状態でYが走るとYはoを取得できるがiが取れずに待ちに入り、実行状態に戻ったXもoが取れずに待つため、双方が永久に進めなくなる。
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6(IPA)
優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX,Yがある。X…
正解:処理B
要点:取得順序が逆のロックを片方だけ持つ区間で詰まる
デッドロックは、XとYが互いに相手の保持するセマフォを待ち合ったときに起きる。Xはiを取得した直後でまだoを取得していない区間、すなわち処理Bでプリエンプトされると危険で、そこでYが動くとYはoを取得できるがiが取れずに待ちに入る。実行状態へ戻ったXもoが取れずに待つため、双方が永久に進めなくなる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。