「デッドロックって結局なに?」
応用情報技術者試験でも超頻出ですが、
- 排他制御
- セマフォ
- ロック
と一緒に出てくるので混乱しやすいテーマです。
この記事では、
- デッドロックとは?
- なぜ発生する?
- 発生条件
- 防止方法
を5分で理解できるように解説します!
まず結論
デッドロックとは?
「お互い待ち続けて処理が止まること」
です!
超簡単な例
一本道の橋
→ A車 ← B車
狭くてすれ違えません。
状況
- A車:「Bが下がるまで進めない」
- B車:「Aが下がるまで進めない」
結果
永遠に動けない!
これがデッドロック。
コンピュータでは?
資源の取り合い
例えば:
- プリンタ
- ファイル
- メモリ
などを複数処理で使う。
具体例
AとBの2つの処理
A
- 資源①を取得
- 資源②を待つ
B
- 資源②を取得
- 資源①を待つ
結果
A → B待ち
B → A待ち
永遠に進まない!
これがデッドロック。
なぜ起こる?
排他制御があるから
共有資源を同時利用できないようにロックしている。
その結果、
「待ち」が発生する。
デッドロックの4条件
応用情報で超頻出!
① 相互排他
同時利用できない
例:
- プリンタ1台
② 占有待ち
資源を持ったまま待つ
A:
- 資源①保持
- 資源②待機
③ 横取り不可
強制回収できない
使っている資源を無理やり奪えない。
④ 循環待ち
お互い待っている
A → B待ち
B → A待ち
超重要!
4条件が全部そろうと発生
つまり、
1つ崩せば防げる!
デッドロック防止方法
方法① 資源取得順を統一
例えば:
必ず①→②の順で取得
にする。
すると循環待ちしない!
方法② 一括取得
必要な資源を最初に全部取得。
方法③ タイムアウト
一定時間待ったら解除。
方法④ 使用後すぐ解放
ロック時間を短くする。
応用情報でよく出るポイント
頻出👇
- デッドロック4条件
- 排他制御との関係
- セマフォ
- 資源割当
- 防止策
OS分野の超重要テーマ。
よくあるひっかけ
「デッドロック=CPU故障」
→ 違う!
ソフトウェア側の資源待ち問題。
1分で復習!
デッドロック
お互い待って停止
原因
資源の取り合い
4条件
- 相互排他
- 占有待ち
- 横取り不可
- 循環待ち
防止方法
- 順序統一
- 一括取得
- タイムアウト
練習問題
問題
デッドロックを防止する方法として適切なものはどれか。
ア
資源取得順序を統一する
イ
CPUクロックを上げる
ウ
メモリ容量を減らす
エ
スレッド数を固定する
解答
正解:ア
解説
資源取得順序を統一すると、循環待ちが発生しにくくなり、デッドロック防止につながります。
まとめ
デッドロックとは
「お互い待ち続けて停止する状態」
超重要
- 排他制御
- 資源待ち
- 4条件
- 防止策
特に、
「4条件を全部覚える」
ここは応用情報でかなり狙われます!
知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

未経験から、ITエンジニアへ。
「IT業界に興味はあるけれど、自分にできるか不安」「何から始めればいいのか分からない」そんな方のために、Tech GO は未経験からのIT転職を専門的にサポートします。求人を紹介するだけではなく、あなたの強みを整理し、応募準備から入社後の成…
まずは無料でキャリア相談

コメント