Você está na página 1de 2

Algoritmo do banqueiro

O Algoritmo do banqueiro um algoritmo de alocao de recursos com preveno de impasses desenvolvido por Edsger Dijkstra que testa a segurana pela simulao da alocao do mximo pr-determinado possvel de montantes de todos os recursos computacionais, e em seguida faz uma verificao de estados-seguros para testar a possibilidade de condies de impasse para todas as outras atividades pendentes, antes de decidir se a alocao deve prosseguir. O algoritmo foi desenvolvido no durante o projeto do sistema operacional THE e originalmente descrito (em Holands) em EWD108. O nome por analogia a maneira com que os banqueiros respondem por constrangimentos de liquidez. Algoritmo O algoritmo do banqueiro executado pelo sistema operacional quando um processo de computao requisita recursos.. O algoritmo impede o impasse, ao negar ou adiar o pedido se ele determinar que aceitar o pedido pode colocar o sistema em um estado inseguro (onde um impasse poderia ocorrer). Quando um novo processo entra em um sistema, ele deve declarar o nmero mximo de instncias de cada tipo de recurso que no pode exceder o nmero total de recursos no sistema.

Recursos
Para o algoritmo do banqueiro trabalhar, ele precisa saber trs coisas:

Quanto de cada recurso cada processo poderia solicitar Quanto de cada recurso cada processo atualmente detm Quanto de cada recurso o sistema tem disponvel

Recursos podem ser atribudos a um processo somente se forem preenchidas as seguintes condies: 1.Pedido mximo, seno ajuste a condio de erro definida como o processo ultrapassou a quantidade mxima feita por ele. 2.Pedido disponvel seno o processo tem que esperar at que mais recursos estejam disponveis. Alguns dos recursos que so controlados em sistemas reais so memria, semforos e interfaces de acesso. Exemplo Supondo que o sistema distingue quatro tipos de recursos, (A, B, C e D), o seguinte um exemplo de como esses recursos poderiam ser distribudos. Note que este exemplo mostra o sistema em um instante antes de um novo pedido de recursos chegar. Alm disso, os tipos e nmero de recursos so abstrados. Sistemas reais, por exemplo, lidariam com quantidades muito maiores de cada recurso.
Recursos do sistema disponveis so: 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 (mximo de recursos): A B C D P1 3 3 2 2 P2 1 2 3 4 P3 1 1 5 0

Estados seguros e inseguros


Um estado (como no exemplo acima) considerada seguro se possvel para todos os processos concluir sua execuo (terminar). Desde que o sistema no pode saber quando o processo ser encerrado, ou quantos recursos ele ter solicitado at ento, o sistema assume que todos os processos acabaro por tentar adquirir o mximo de seus recursos previstos e encerrar logo depois. Esta uma suposio razovel na maioria dos casos uma vez que o sistema no est particularmente preocupado com o tempo que cada processo executado (pelo menos no numa perspectiva de preveno de deadlocks). Alm disso, se um processo termina sem adquirir o seu mximo de recursos, isto s torna mais fcil para o sistema. Dada esta premissa, o algoritmo determina se um estado seguro, tentando encontrar um conjunto hipottico de pedidos pelos processos que permitiriam a cada, a aquisio de seus recursos mximos e depois o seu trmino (retornando os seus recursos para o sistema). Qualquer estado onde tal conjunto no existe definido como um estado inseguro. Pseudocdigo function algoritmo_do_banqueiro(conjunto de processos P, recursos atualmente disponveis A) {
while (P no vazio) { boolean achou = false for each (processo p in P) { Cp = atual alocao de recursos para o processo(p) Mp = requisito mximo de recursos para o processo(p) if (Mp Cp A) { // p pode obter tudo de que necessita. // Suponha que ele faz isso, termina, e libera o que ele j tem. A = A + Cp remove_elemento_do_conjunto(p, P) achou = true } } if (not achou) { return INSEGURO } } return SEGURO }

Você também pode gostar