Centro Universitário do Pará – CESUPA CESUPA Bacharel em Ciência da Computação – BCC Professora: Alessandra Natasha Alunos: Turma: CC7TA Márcio Lobato Pedro Victor Pinheiro Roberto Franco
Resenha Esta resenha diz respeito respeito ao conteúdo conteúdo abordado abordado no livro Sistemas Operacionais Operacionais Modernos de Andrew S. Tanembaum, Tanembaum, capítulo 6, seção 6.5.3, páginas 173, 174 e 175. Nesta seção, Tanembaum explica de uma maneira bem clara e simples sobre o que consiste o algoritmo do banqueiro, inclusive dando exemplos de seu funcionamento. Criado por Dijkstra em 1965, o algoritmo do banqueiro é um algoritmo de alocação de recursos e que pode evitar a ocorrência de deadlocks. Seu nome foi originado a partir de seu funcionamento, o qual pode ser comparado ao comportamento de um banqueiro fornecendo créditos a um determinado número de clientes. Imagine que cada cliente possui seu próprio negócio, e cada um deles eventualmente faz requis requisiçõe içõess de emprést empréstimo imoss ao banco banco para para contin continuar uar operan operando do seus seus negóci negócios. os. Entret Entretanto anto,, o banqueiro possui uma quantidade limitada de unidades de crédito e precisa saber distribuir as unidades da melhor forma possível entre seus clientes. Na situação descrita descrita acima, as unidades de créditos fazem o papel dos recursos recursos do sistema, sistema, os clientes são os processos (os quais necessitam de recursos para continuar seu processamento) e o banqueiro é o sistema operacional. Para Para fazer fazer a distrib distribuiçã uição o da melhor melhor forma forma possí possível, vel, o banque banqueiro iro (siste (sistema ma operac operacion ional) al) precisa saber o número de clientes, quantos recursos cada um deles possui e precisa, e quantas unidades de credito ainda estão disponíveis. Os clientes possuem um limite máximo de créditos, quando quando esse limite é atingido atingido significa que todas as suas necessidades necessidades foram atendidas atendidas e agora os créditos podem ser devolvidos ao banqueiro. A partir dessas informações o banqueiro faz um cálculo de quando uma situação é segura e quando uma situação é insegura. Uma situação é dita segura quando o número de unidades de créditos disponíveis é o suficiente para atender as necessidades de um cliente e de clientes futuros, ou atingir o seu limite máximo, fazendo com que os créditos alocados sejam devolvidos ao banqueiro. Uma situação é dita insegura quando as unidades disponíveis não serão capazes de satisfazer as necessidades do cliente e nem de atingir o limite máximo, caracterizando assim uma situação de deadlock . A partir de uma requisição de crédito, se o banqueiro determinar a situação como segura o empréstimo empréstimo é fornecido, fornecido, caso contrário o cliente deve esperar e seu empréstimo empréstimo será realizado em um outro momento. O algoritmo do banqueiro também pode ser usado em situações em que um processo
necessita necessita de diversos diversos tipos de recursos, recursos, como por exemplo unidades de fita, plotters, impressoras, impressoras, etc. Ao final da leitura do conteúdo do capítulo do Tanembaum, nos deparamos com uma surpresa. Tanembaum afirma que o algoritmo na prática é inútil, pois os processos quase nunca sabem exatamente quantos recursos vão precisar e também a quantidade de processos varia, isso sem contar também com a possibilidade de um recurso “desaparecer”, devido a algum defeito físico. Dito isso podemos podemos realmente concordar que o algoritmo depende de várias várias informações que nem sempre estão disponíveis, o que impede seu uso na prática. Devido a isso outras soluções precisam ser criadas e estudadas para resolver esses problemas de alocações de recursos, pois a própria natureza desse ambiente gera vários problemas e situações, onde deadlock é apenas um deles. Embora o algoritmo do banqueiro não esteja totalmente adaptado para esse ambiente, nada impede que modificações possam ser feitas tornando-o finalmente pronto para uso.