Please enable JavaScript.
Coggle requires JavaScript to display documents.
Impasses - Coggle Diagram
Impasses
Condições
Entidades externas não influencias em situações de impasse. Outra situação é que tarefas envolvidas tem recurso compartilhado, caso venham ser bloqueadas podem gerar um colapso no sistema inteiro (por conta de cada tarefa depender de vários recursos compartidos)
-
-
Técnicas de tratamento
Para prevenir impasses temos algumas formas de tratamentos, que funcionam como regras que previnam, impendem, detectam e resolvem a formação de impasses
Impedimento de impasses
Uma outra maneira de impedir esses impasses seria acompanhar os recursos de perto, é no momento que foram solicitados se não cabe a solicitação, negar estes recursos.
Estado inseguro : é considerado um estado seguro quando nosso grafo de possível estados, conseguimos concluir todas as tarefas do grafo
Estado seguro : Caso essas tarefas realizadas so levem a impasses, é considerado inseguro
Uma das técnicas para impedimento de impasses é chamado de "algoritmo do banqueiro", que no caso necessita de conhecimento prévio sobre as tarefas para as operações
-
Prevenção de impasses
4 condições principais, se uma delas forem quebradas, os impasses não podem ocorrer
Posse e espera : Se cada tarefa usar um recurso de cada vez, solicitando liberando de imediato após seu uso, não pode ocorrer impasses.
Não-preempção : Tarefas obtém e liberam recursos que necessitam, se for possível tirar um recurso de uma tarefa sem está tarefa libere explicitamente, o impasse de tal recurso não pode ocorrer.
Exclusão mútua : Não havendo exclusão mutua no acessos de recursos, não pode haver impasses
Espera circular : Se impedirmos a formação de ciclos (um ciclo nada mais é que uma cadeia de dependências de tarefas e recursos), impediremos os impasses.
Em algumas situações o uso de mutex ou semáforos podem levar a impasses, os famosos "deadlock"
Exemplos
Uma transferência bancaria entre duas contas, caso essa operação ocorra simultaneamente pode acontecer o seguinte impasse:
Supondo que cada operação utiliza uma tarefa, e no momento da operação simultânea cada tarefa solicita o mutex da outra tarefa, nenhuma das tarefas irá conseguir prosseguir sem o mutex, gerando assim um impasse.