デッドロックとは?
デッドロックとは、複数のタスクが互いに相手の保持する資源を待ち続け、いずれも先へ進めなくなる状態。相互排他・保持と待ち・横取り不可・循環待ちの4条件がすべて成立すると発生する。
エンベデッドシステムスペシャリスト試験の過去問では3回出題されています(2019年度〜2025年度)。
でっどろっく
デッドロックの意味
複数のタスクが互いに相手の保持する資源を待ち続け、いずれも先へ進めなくなる状態。相互排他・保持と待ち・横取り不可・循環待ちの4条件がすべて成立すると発生する。
デッドロックの具体例
タスクAが資源1→資源2の順、タスクBが資源2→資源1の順で獲得する設計だと、双方が1つ目だけを取った時点で膠着する。資源の獲得順序を全タスクで統一すれば循環待ちが消え、発生しなくなる。
デッドロックは試験でどう引っ掛けられる?
「2つのセマフォの取得順序が逆になっている区間」を指摘させる出題が頻出。順序が同じなら安全。
デッドロックと関連する用語
デッドロックが出た過去問
RTOSを用いたシステムにおいて、優先度逆転の原因となるものはどれか。
正解:優先度の低いタスクBが優先度の高いタスクAの実行に必要なリソースを占有しているが、タスクAはタスクBに必要なリソースを占有していない。
要点:優先度逆転は低優先度タスクの資源占有が高優先度を待たせる
優先度逆転は、高優先度タスクが必要とする資源を低優先度タスクが占有しているために、高優先度タスクが待たされる状況で起きる。さらに中間の優先度をもつタスクが低優先度タスクをプリエンプトすると、待ち時間が際限なく延びる無制限優先度逆転となる。相互に資源を奪い合うデッドロックとは別の現象である点に注意したい。
出典:令和1年度 春期 エンベデッドシステムスペシャリスト試験 am2 問7(IPA)優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX,Yがある。X…
正解:処理B
要点:取得順序が逆の2つのセマフォを片方だけ持つ区間が危険
デッドロックはXとYが互いに相手の持つセマフォを待ち合うときに起きる。Xはiを取得した直後、まだoを取得していない状態にあるときプリエンプトされると危険で、これが処理Bの区間である。この状態でYが走るとYはoを取得できるがiが取れずに待ちに入り、実行状態に戻ったXもoが取れずに待つため、双方が永久に進めなくなる。
出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 am2 問6(IPA)優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスクX,Yがある。X…
正解:処理B
要点:取得順序が逆のロックを片方だけ持つ区間で詰まる
デッドロックは、XとYが互いに相手の保持するセマフォを待ち合ったときに起きる。Xはiを取得した直後でまだoを取得していない区間、すなわち処理Bでプリエンプトされると危険で、そこでYが動くとYはoを取得できるがiが取れずに待ちに入る。実行状態へ戻ったXもoが取れずに待つため、双方が永久に進めなくなる。
出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 am2 問6(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。