Please enable JavaScript.
Coggle requires JavaScript to display documents.
Deadlock - Coggle Diagram
Deadlock
O Problema do Deadlock
Conjunto de processos bloqueados
Cada um mantendo um recurso
Esperando para adquirir um
recurso mantido por outro processo no conjunto
Modelo do Sistema
Sistema
Conjunto finito de recursos
A serem distribuídos
entre processos em competição
Cada processo utiliza um recurso
Uso
Liberação
Requisição/Solicitação
Caracterização do Deadlock
Condições Necessárias
Manter e esperar
processo mantendo pelo menos um
recurso
esperando para adquirir outros recursos mantidos por outros processos
Prevenção
garantir que sempre que um
processo solicita um recurso
Não preempção
um recurso só pode ser liberado
voluntariamente pelo processo que o mantém
depois que esse
processo tiver terminado sua tarefa
Prevenção
solicitar outro recurso que não pode ser alocado imediatamente a ele
Recursos preemptados são acrescentados à lista de recursos
pelos quais o processo está esperando
processo só será reiniciado quando puder reobter seus antigos recursos
Exclusão mútua
um processo de cada vez pode usar um
recurso
Prevenção
não exigindo para recursos
compartilháveis
Espera circular
Loop de um conjunto de processos esperando recursos de outros
Prevenção
impõe uma ordenação total de todos
os tipos de recurso
exige que cada processo solicite
recursos em uma ordem de enumeração aumentada
Grafo de Alocação de Recursos
arestas E
Aresta de requisição
Aresta direcionada Pi→ Rj
Aresta de atribuição
Aresta direcionada Rj → Pi
vértices V
Conjunto consistindo em todos os
P = processos no sistema
R = tipos de recurso no sistema
Se o grafo não contém ciclos
sem deadlock
Se o grafo contém um ciclo
Se apenas uma instância por tipo de recurso
deadlock
Se várias instâncias por tipo de recurso
possibilidade de deadlock
Métodos para Tratamento de
Deadlocks
Garantir que o sistema nunca entrará em um estado de deadlock
Pelo uma das condições necessárias não seja satisfeita
Permitir que o sistema entre em um estado de deadlock e depois se recupere
SO deverá ser capaz de determinar se
aconteceu um deadlock
Ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema
se os deadlocks forem
considerados raros
Evitando Deadlock
Estado Seguro
Sistema deve decidir se a alocação
imediata ou não
Se houver uma
sequência de processos
para cada Pi
Os recursos que
Pi ainda pode solicitar possam ser satisfeitos
Necessário estar sempre avaliando o sistema
Processo declare o número máximo de recursos de cada tipo que ele pode precisar
Examina dinamicamente o estado de alocação de recurso
Estado de alocação de recurso é definido pelo
número de recursos disponíveis e alocados
Detecção de Deadlock
Algoritmo que examine o estado do sistema
Um algoritmo para se recuperar do deadlock
Recuperação de Deadlock
Caso detectado o deadlock
Informar ao usuário e deixar que o mesmo
resolva manualmente
Deixar que o sistema se recupere
automaticamente
Abortando um ou mais processos
Preemptar alguns recursos de um ou mais
processos em deadlock
Terminando o(s) processo(s)
Aborte todos os processos em deadlock
Aborte um processo de cada vez
até que o ciclo de
deadlock seja eliminado