Algoritmo Do Banqueiro
Short Description
Download Algoritmo Do Banqueiro...
Description
Turma /Curso: 7ª A - Sistemas de Informação
Algoritmo do Banqueiro Introdução Algoritmo do Banqueiro - Criado por Dijkstra em 1965, é um algoritmo de alocação de recursos e que pode evitar a ocorrência de Deadlock.(situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá). 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. Algoritmo do Banqueiro (implementada com a presença das quatro condições) também possui várias limitações. A maior delas é a necessidade de um número fixo de processos ativos e de recursos disponíveis no sistema. Essa limitação impede que a solução seja implementada na prática, pois é muito difícil prever o número de usuários no sistema e o número de recursos disponíveis, para que ocorra a situação de Deadlock. Condições para ocorrência •
Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa.
•
Espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos.
•
Exclusão mútua: cada recurso só pode estar alocado a um único processo em um determinado instante.
•
Não-preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmorecurso.
Para prevenir a ocorrência de Deadlocks, é preciso garantir que uma das quatro condições apresentadas, necessárias para sua existência, nunca aconteça. A prevenção de Deadlocksevitando-se a ocorrência de qualquer uma das quatro condições é bastante limitada e, por isso, na prática não é utilizada. A maior delas é a necessidade de um número fixo de processos ativos e de recursos disponíveis no sistema. Todas estas condições devem estar presentes para que ocorra um Deadlock. Se alguma delas falhar então não ocorrera um Deadlock. Modelagem Em geral quatro estratégias são utilizadas para tratar Deadlocks: •
Ignorar completamente o problema. Se o ignorarmos talvez ele nos ignore.
•
Detecção e recuperação. Deixar os Deadlocks ocorrerem, detectá-los e agir.
•
Anulação dinâmica por meio de uma alocação cuidadosa e recursos.
•
Prevenção, negando estruturalmente necessárias para gerar um Deadlock.
uma
das
quatro
condições
Detecção e Recuperação de Deadlocks O sistema não tenta prevenir a ocorrência de Deadlocks. Em vez disso, ele deixara que ocorram e tenta detecta-los à medida que isso acontecer; arranjará depois alguma maneira de se recuperar após o Deadlock. Temos também a detecção de Deadlocks com um recurso de cada tipo, sendo que teremos apenas um recurso de cada tipo… (apenas uma impressora, apenas um CD-ROM, etc.). Existe um algoritmo para detectar se existem ciclos no grafo dos processos e recursos. Funciona tipo o DFS para a detecção de ciclos. Se existir um ciclo, então estamos na presença de um Deadlock. Recuperação de Deadlocks Uma vez que o algoritmo de detecção de Deadlocks é bem sucedido, o que se fará a seguir é recuperar o sistema operativo da situação de Deadlock, e colocá-lo novamente em situação de funcionamento normal. •
Recuperação por meio de preempção: Retirar o recurso a um processo e dá-lo a outro sem que o processo proprietário do recurso se aperceba.
•
Recuperação por meio de reversão de estado: O sistema operativo, ao longo da execução dos processos vai guardando imagens dos estados do processo, para que fique como que com checkpoints do processo. Não guarda apenas os estados dos processos, como guarda também os recursos associados ao processo no momento em que é criado o checkpoint. O sistema não sobrepõe um checkpoint novo a um já guardado anteriormente. Ele cria sempre uma imagem nova. Depois que o algoritmo de detecção de Deadlocks detecta um Deadlock os processos incluídos no Deadlock voltam a estados anteriores.
•
Recuperação por meio de eliminação de processos: A maneira mais grosseira, mas também a mais simples é matar um ou mais processos envolvidos no Deadlock. Com um pouco de sorte os outros processos poderão ser capazes de prosseguir. Um processo de fora do ciclo onde é detectado o Deadlock também pode ser uma vítima a matar. Sempre que possível, o processo a matar deve ser um que possa ser executado desde o início sem causar danos colaterais.
O Algoritmo do Barqueiro “É um algoritmo que pode evitar Deadlocks” Um banqueiro de uma pequena cidade pode negociar com um grupo de clientes com os quais ele abre linhas de crédito. O que o algoritmo faz é
verificar se libertação de uma requisição pode levar a um estado inseguro.Em caso positivo, a requisição é negada. Se a libertação de uma requisição levar a um estado seguro, então ela é atendida. Imagine que cada cliente possui seu próprio negócio, e cada um deles eventualmente faz requisições de empréstimos ao banco para continuar operando seus negócios. O banqueiro possui uma quantidade limitada de unidades de crédito e precisa saber distribuir as unidades da melhor forma possível para todos os seus clientes. As unidades de créditos fazem o papel dos recursos do sistema, os clientes são os processos (os quais necessitam de recursos para continuar seu processamento) e o banqueiro é o sistema operacional. Para fazer a distribuição da melhor forma possível, o banqueiro (sistema operacional) 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 esse limite é atingido significa que todas as suas necessidades foram 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 às 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 é fornecido, caso contrário o cliente deve esperar e seu 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 de diversos tipos de recursos, como por exemplo unidades de fita, plotters, impressoras, etc. Conclusão Um problema potencial em qualquer sistema operacional, um estado de Deadlock ocorre quando dois ou mais processos estão esperando, indefinidamente por um evento que só pode ocorrer por um dos processos em espera. Existem alguns métodos para tratar Deadlocks: detecção e recuperação e prevenção de Deadlock.Uma das estratégias mais simples de tratar Deadlock, seria ignorá-lo, porém, é necessário uma análise cautelosa, para o implemento ou não das estratégias de tratamento do Deadlock, assim como, avaliar o custo/benefício que essas implantações podem gerar. Dito isso podemos realmente concordar que o algoritmo depende de várias informações que nem sempre está disponível, o que impede seu uso na prática. Embora o algoritmo do banqueiro não esteja totalmente adaptado para esse ambiente, nada impede que modificações sejam feitas para torna-lo pronto e disponível para uso. Vale salientar que 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.
View more...
Comments