Algoritmo do banqueiro
A B C D
3 1 1 2 Processos (recursos atualmente alocados): A B C D
P1 1 2 2 1
P2 1 0 3 3
P3 1 1 1 0 Processos (máximo de recursos): A B C D
P1 3 3 2 2
P2 1 2 3 4
P3 1 1 5 0 [editar] Estados seguros e inseguros Um estado (como no exemplo acima) é considerada seguro se é possível para todos os processos concluir sua execução (terminar). Desde que o sistema não pode saber quando o processo será encerrado, ou quantos recursos ele terá solicitado até então, o sistema assume que todos os processos acabarão por tentar adquirir o máximo de seus recursos previstos e encerrar logo depois. Esta é uma suposição razoável na maioria dos casos uma vez que o sistema não está particularmente preocupado com o tempo que cada processo é executado (pelo menos não numa perspectiva de prevenção de deadlocks). Além disso, se um processo termina sem adquirir o seu máximo de recursos, isto só torna mais fácil para o sistema. Dada esta premissa, o algoritmo determina se um estado é seguro, tentando encontrar um conjunto hipotético de pedidos pelos processos que permitiriam a cada, a aquisição de seus recursos máximos e depois o seu término (retornando os seus recursos para o sistema). Qualquer estado onde tal conjunto não existe é definido como um estado inseguro. [editar] Pseudocódigo function algoritmo_do_banqueiro(conjunto de processos P, recursos atualmente disponíveis A) { while (P não vazio) { boolean achou = false for each (processo p in P) { Cp = atual alocação de recursos para