本文へスキップ
totonoe.tech

OSを整える

中級

デッドロックを整える。

= 資源の取り合いで止まる様子と、避け方を1手ずつ見る

資源を逆順に取るとどうなるか

丸がプロセス、四角が資源です。資源から実線の矢印が出ていれば「持っている」、プロセスから点線の矢印が出ていれば「待っている」です。

取る順番を決める 入力は外に出ません

銀行家のアルゴリズム

資源を渡してもよいか、「全員がいつかは最後まで終われる順序」があるかで決める方法です。表の数字は書き換えられます。

表を入れる(初期値は教科書の例) 入力するそばから計算(会社のPCでも、入力は外に出ません)
プロセス Allocation(いま持っている量) Max(最大で必要な量) Need(あと必要な量)
ABCABCABC
P0
P1
P2
P3
P4
Available(空いている量)

1手ずつ。Work(いま自由に使える量)は最初 Available と同じで、Need が Work に収まるプロセスを先頭から探して終わらせます。

デッドロックの4条件

次の4つが全部そろったときに起きます。どれか1つでも崩せば起きません。

1. 相互排除

資源を同時に使えるのは1つのプロセスだけ。プリンタや排他ロックがその例です。

崩す方法:複数で同時に使えるようにする(読み取り専用にするなど)

2. 保持と待ち

資源を持ったまま、さらに別の資源を待つ。

崩す方法:必要な資源を最初に全部まとめて取る

3. 横取り不可

持っている資源を、他のプロセスが無理やり取り上げることはできない。

崩す方法:待たされたら持っている資源をいったん手放す(取り上げを許す)

4. 循環待ち

P1がP2の持つ資源を待ち、P2がP1の持つ資源を待つ、のように待ちが一周している。

崩す方法:資源に番号を付け、全員が番号の小さい順に取る

上の実験との対応。逆順に取る例では4つの条件が全部そろっています。順番をそろえると「循環待ち」が崩れるので、片方が待つだけで済み、止まりません。

対策の3種類。試験では「予防」(4条件のどれかを成り立たなくする)、「回避」(銀行家のアルゴリズムのように、安全な状態だけを渡す)、「検出と回復」(起きたら見つけて、プロセスを終わらせるなどで解く)に分けて問われます。

安全な状態。全プロセスを最後まで走らせられる順序(安全な順序)が1つでもある状態です。順序は1通りとは限らないので、探し方によって答えの並びが違っても正解になります。安全な順序がなければ「不安全」ですが、不安全だからといってすぐデッドロックになるとは限りません。デッドロックになる可能性があるという意味です。

実務での意味。データベースの更新で、2つの処理が同じ2行を逆の順に更新するとデッドロックになります。多くのデータベースは片方を自動で取り消して解きますが、更新の順番をそろえておくのが一番確実です。

この道具の銀行家のアルゴリズムは、資源の種類ごとに複数個ある一般形で、「いまの状態が安全か」を調べる部分を扱います。新しい要求を受け入れてよいかの判定は含みません。

参考: 情報処理推進機構(IPA)の情報処理技術者試験シラバスの用語(デッドロック、排他制御、資源割付グラフ)に合わせています。銀行家のアルゴリズムの例はOSの教科書に広く載っている5プロセス・3資源の例です。2026年11月時点。

このツールについて

2つのプロセスが資源を取り合って止まる様子と、止まらない取り方を1手ずつ見比べます。銀行家のアルゴリズムで、安全な順序があるかも確かめられます。

資源を逆順に取り合うと止まる様子と、銀行家のアルゴリズムで安全な順序を探す様子を1手ずつ見ます。

主な機能

  • 資源割付グラフで取り合いを1手ずつ再生
  • 循環ができたら強調して止まる
  • 取る順をそろえた場合と比べる
  • 銀行家のアルゴリズムで安全な順序を判定
  • 4条件と、それぞれの崩し方

よくある質問

Q. デッドロックとは何ですか?

A. 複数のプロセスが、互いに相手の持っている資源を待ち合って、どれも先へ進めなくなる状態です。2人が互いに相手の持つペンを待って、どちらも書けないような状態です。

Q. デッドロックが起きる4条件とは?

A. 相互排除(資源を同時に使えない)、保持と待ち(持ったまま次を待つ)、横取り不可(取り上げられない)、循環待ち(待ちが輪になる)の4つです。全部そろうと起きうるので、どれか1つを崩せば防げます。

Q. 資源を取る順番をそろえると、なぜ防げるのですか?

A. 全員が同じ順番で資源を取れば、待ちが輪になる(循環待ち)ことが起きないからです。このツールで、逆順の場合とそろえた場合を比べられます。

Q. 銀行家のアルゴリズムとは?

A. 資源を渡す前に、「渡しても全員がいつかは最後まで終われる順番(安全な順序)があるか」を確かめ、あるときだけ渡す方法です。このツールは、いまの状態が安全かどうかの判定までを行います。

Q. 基本情報技術者試験に出ますか?

A. デッドロックの意味と防ぎ方(資源を取る順番をそろえる など)が出ます。このツールで、図と手順で確かめられます。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。

運営サイト

私たちが運営するサイト