銀行家のアルゴリズム計算(安全な順序とデッドロック検出)
銀行家のアルゴリズムを実行し、Need行列、ステップごとの安全性検査と安全系列、プロセスのリソース要求の可否、デッドロック検出まで求めます。
1つの状態に複数の安全系列があることがあります。この結果は、選択した探索順に従っています。
安全とは、ある順序ですべてのプロセスが最大量を得て終了できることです。安全でないというのはまだデッドロックしているという意味ではなく、デッドロックを排除できなくなったという意味です。
| プロセス | Allocation(割当) A B C | Max(最大) A B C | Need(必要) A B C |
|---|---|---|---|
| P0 | 0 1 0 | 7 5 3 | 7 4 3 |
| P1 | 2 0 0 | 3 2 2 | 1 2 2 |
| P2 | 3 0 2 | 9 0 2 | 6 0 0 |
| P3 | 2 1 1 | 2 2 2 | 0 1 1 |
| P4 | 0 0 2 | 4 3 3 | 4 3 1 |
| ステップ | プロセス | Need(必要) | 前のWork | 後のWork | 理由 |
|---|---|---|---|---|---|
| 1 | P1 | 1 2 2 | 3 3 2 | 5 3 2 | Need(必要) ≤ Workなので、終了して割り当てを解放できます |
| 2 | P3 | 0 1 1 | 5 3 2 | 7 4 3 | Need(必要) ≤ Workなので、終了して割り当てを解放できます |
| 3 | P4 | 4 3 1 | 7 4 3 | 7 4 5 | Need(必要) ≤ Workなので、終了して割り当てを解放できます |
| 4 | P0 | 7 4 3 | 7 4 5 | 7 5 5 | Need(必要) ≤ Workなので、終了して割り当てを解放できます |
| 5 | P2 | 6 0 0 | 7 5 5 | 10 5 7 | Need(必要) ≤ Workなので、終了して割り当てを解放できます |
銀行家のアルゴリズムは、複数の種類のリソースを持つシステムが安全な状態にあるかどうか(すべてのプロセスが、これから必要になり得るものを得て終了できる順序があるか)と、新しい要求を、安全性を失わずに許可できるかどうかを判定します。この計算ツールは、Need行列を作成し、Workベクトルを使う安全性アルゴリズムをステップごとに実行し、リソース要求を確認し、Request行列に対する関連のデッドロック検出アルゴリズムも実行します。
使い方
- Allocation行列を、1行に1プロセスずつ入力します(P0: 0 1 0)。
- Max行列(デッドロック検出の場合はRequest行列)を同じ順序で入力します。
- Availableベクトル、または各リソースの全インスタンス数を入力します。
- 必要なら、P1 1 0 2のような要求を入力し、許可されるかを確認します。
計算式
Need = Max − Allocation · Work = Available;繰り返し:Need ≤ WorkのPᵢを探してWork = Work + Allocationᵢ · すべてのプロセスが終了すれば安全
Pᵢからの要求は、Needを超えればエラー、Availableを超えれば待機となり、それ以外は、割り当てたと仮定した後の状態がなお安全な場合にのみ許可されます。デッドロック検出ではNeedの代わりに現在のRequestを使い、何も保持していないプロセスは最初から終了済みとして扱い、終了できないプロセスがデッドロックです。安全系列は複数あることがあり、探索順のオプションで、よく使われる2通りの追い方を再現できます。
計算例
サンプルは、Silberschatzの『Operating System Concepts』の教科書の例です。プロセス5個、リソースA・B・C、Available (3, 3, 2)。NeedはP0 (7,4,3)、P1 (1,2,2)、P2 (6,0,0)、P3 (0,1,1)、P4 (4,3,1)です。まずP1が終了でき(Workは5 3 2)、続いてP3 (7 4 3)、P4 (7 4 5)、P0 (7 5 5)、P2 (10 5 7)が終了できるので、状態は安全で、系列は<P1, P3, P4, P0, P2>です。P1の要求 (1, 0, 2)は許可されます。
よくある質問
安全でない状態はデッドロックですか?
いいえ。安全でないとは、すべてのプロセスが終了するとはもう保証できないという意味で、デッドロックが起こるかどうかはわかりません。デッドロックとは、一部のプロセスが実際に互いを永久に待っている状態です。
自分の安全系列が教科書と違うのはなぜですか?
安全な状態には複数の安全系列があることがよくあります。教科書によって探索の追い方が少し違うので、探索順のオプションを授業に合わせてください。アルゴリズムが見つけた系列はどれも有効です。
MaxとRequestの違いは何ですか?
Maxは、プロセスがこれから要求し得る最大量です(デッドロックを事前に避けるために使います)。Requestは、プロセスが今まさに待っている量です(すでに起きたデッドロックを検出するために使います)。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/banker-s-algorithm-tool/
このツールを引用する
kakaoCalc. (2026, November 8). 銀行家のアルゴリズム計算(安全な順序とデッドロック検出). https://kakao.mobile/ja/tools/banker-s-algorithm-tool/
“銀行家のアルゴリズム計算(安全な順序とデッドロック検出).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/banker-s-algorithm-tool/.