銀行家のアルゴリズム
システムは資源の要求を受けると、銀行家のアルゴリズムを走らせ、要求を許可しても安全かどうかを判定する。この判定が済めば、その後のアルゴリズムは難しいものではない。
要求に許可を与えられるか? 与えられない場合、要求は実行不可能で、拒絶されるか待ちリストに入れられる
要求が許可された場合を仮定する
新しい状態は安全か? 安全であれば許可する そうでなければ拒絶する待ちリストに入れる
システムが実行不能ないし安全でない要求を拒絶・延期するかどうかはオペレーティングシステムに固有の判断である
前の例で示した状態が安全であることを、各プロセスが最大の資源を確保し終了できることによって示す。
P1 がさらに Aを2、Bを1、Dを1 の資源を獲得し、最大値に到達する システムは A1、B0、C1、D1の資源を利用可能である
P1 終了し、Aを3 Bを3, Cを2、Dを2返却する システムはこの時点でA4、B3、C3、D3の資源を利用できる
P2 がさらにBを2、D1を確保し、終了、全ての資源を返却する システムはこの時点でA5、B3、C6、D6の資源を利用できる
P3 がCを4獲得し、終了する システムはこの時点で全ての資源A6、B4、C7、D6を利用できる
全てのプロセスが完了できたので、現在の状態は安全である
これらの資源獲得要求は「仮説的」、すなわちアルゴリズムがシステム状態の安全性を確認するために生成したもので、実際に資源が与えられたり、プロセスが終了するわけでない。また要求が生成される順序は、もし満たされるとしても、重要ではない。仮説的な要求によりプロセスが終了し、システムの利用可能な資源が増えるためである。
危険な状態の例として、例えばプロセス2が最初から資源Bを1つ多く保持していた場合が考えられる。