Sistemas Operacionais
MSc. Marcelo Aires
Sistemas de Informação3º Semestre
Deadlocks
MSc. Marcelo Aires
Sistemas de Informação3º Semestre
Agenda
● Recursos;● Deadlock;● Modelagem de Deadlock;● Tratamento de Deadlock;● Ocorrência de Deadlock;● Detecção de Deadlock;● Recuperação de Deadlock;● Estados Seguros e Inseguros;● Algoritmos de prevenção de deadlock.
O que é um Recurso?
Recursos
● Exemplos de recurso:○ Memória○ HD○ GPU○ Informação
● Recurso é tudo aquilo que pode ser usado;● Processos necessitam de acesso aos recursos em ordem
racional (organizado, raciocinado, sabedoria);
Recursos
● Exemplo de impasse:○ Suponha que um processo 1 possui o recurso A e solicita o
recurso B;○ No mesmo momento, o recurso B esteja sendo usado pelo
processo 2 que também solicita o recurso A;○ Ambos processos querem usar os dois recursos;○ Ambos processos são bloqueados e irão permanecer
assim eternamente;○ Quando dois processos necessitam de um mesmo
recurso, eles estão na região crítica.
Recursos
● Os recursos podem ser:○ Preemptíveis:
■ podem ser retirados de um processo sem quaisquer efeitos;
■ Exemplo: memória (podemos atualizar informações)○ Não preemptíveis:
■ vão induzir o processo a falhar se retirados.■ Exemplo: impressora (uma impressão não pode
sobrepor à outra)
Recursos
● Eventos necessários para os processos usarem um recurso:○ solicitar o recurso;○ usar o recurso;○ liberar o recurso;
● Caso o recurso solicitado seja negado:○ o processo que solicitou pode ser bloqueado; ou○ pode falhar, resultando em um código de erro.
O que é um Deadlock?
Deadlock
● Conceito formal:○ Um conjunto de processos do Sistema Operacional está
em situação de Deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente outro processo desse mesmo conjunto poderá fazer acontecer.
● Normalmente, o evento é uma liberação de um recurso atualmente retido;
● Devido ao impasse, nenhum processo consegue:○ executar;○ liberar recursos;○ ser acordado.
Deadlock
● Deadlocks ocorrem quando os processos detém acesso exclusivo aos recursos;
● Existem quatro condições para ocorrer Deadlocks (obrigatório):○ Condição de exclusão mútua
■ todo recurso está associado a um processo ou disponível○ Condição de posse e espera
■ processos que retém recursos podem solicitar novos recursos○ Condição de não preempção
■ recursos concedidos previamente não podem ser tomados à força○ Condição de espera circular
■ deve ser uma cadeia circular de 2 ou mais processos;■ cada um está à espera de recurso retido por outro processo da
cadeia.
Modelagem de Deadlock
● (a) recurso R alocado ao procedo A;● (b) processo B solicita o recurso S;● (c) processos C e D estão em deadlock sobre os recursos T e U.
Como tratar um Deadlock?
Tratamento de Deadlock
● ignorar por completo o problema○ tô nem aí
● detecção e recuperação○ espero acontecer e depois trato
● evitação dinâmica○ alocar cuidadosamente os recursos
● prevenção○ negar uma das quatro condições necessárias
Como ocorre o Deadlock?
Como ocorre o Deadlock
Como evitar um Deadlock?
Como pode evitar um Deadlock
Algoritmo do Avestruz
● Finge que o problema não existe (mete a cabeça na areia)● Resolve razoavelmente se
○ deadlocks ocorrem muito raramente○ custo de prevenção é alto
● UNIX e Windows seguem esta abordagem● Abordagem de ponderação entre conveniência e correção● Sistemas robustos
○ ocorrência rara○ se ocorrer, não é fim do mundo
Como detectar um Deadlock?
Detecção de deadlock
Detecção de deadlock
● Observe a posse e solicitações de recursos● Um ciclo pode ser encontrado dentro do grafo
Prevenção de Deadlock
Prevenção do Deadlock
● Estruturas de dados necessárias ao algoritmo dedetecção de deadlock
Exemplo de algoritmo
● E: Todos os recursos● A: Disponível● C: em uso● R: recursos solicitados● Cada linha equivale a um
processo
● Como funciona:○ Olhando para A, qual
processo em R pode ser executado?
Formas de Recuperação
Recuperação de Deadlock
● Recuperação através de preempção○ retira um recurso de algum outro processo, a depender da
natureza do recurso● Recuperação através de reversão de estado
○ verifica um processo periodicamente e salva o estado;○ reinicia o processo ou parte se este é encontrado em
estado de deadlock● Recuperação através da eliminação de processos
○ forma mais grosseira, mas é mais simples○ elimina um dos processos do ciclo de deadlock○ escolhe um processo que pode ser reexecutado desde seu
início
Trajetórias de recursos (prevenção)
Estados Seguros e Inseguros
Estados Seguros e Inseguros
● Demonstração de que o estado em (a) é seguro
Estados Seguros e Inseguros
● Demonstração de que o estado em (b) é inseguro
Algoritmo do Banqueiro
Algoritmo do Banqueiro
● É um algoritmo de alocação de recursos com prevenção de impasses;
● Desenvolvido por Edsger Dijkstra;● Testa a segurança pela simulação da alocação e em seguida
faz uma verificação de estados-seguros para testar a possibilidade de condições de impasse.
● Ele precisa saber três coisas:○ Quanto de cada recurso cada processo poderia solicitar;○ Quanto de cada recurso cada processo atualmente detém;○ Quanto de cada recurso o sistema tem disponível.
Algoritmo do Banqueiro (1 recurso)
● Três estados de alocação de recursos○ (a) seguro○ (b) seguro○ (c) inseguro
algoritmo_do_banqueiro(conjunto de processos P, recursos disponíveis A) {while (P não vazio) {
boolean achou = falsefor each (processo p in P) {
Cp = atual alocação de recursos para o processo(p)Mp = requisito máximo 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 + Cpremove_elemento_do_conjunto(p, P)achou = true
}}if (not achou) { return INSEGURO }
}return SEGURO
}
Algoritmo do Banqueiro
● Recursos do sistema disponíveis são:A B C D3 1 1 2
● Processos (recursos atualmente alocados):A B C D
P1 1 2 2 1P2 1 0 3 3P3 1 1 1 0
● Processos (máximo de recursos):A B C D
P1 3 3 2 2P2 1 2 3 4P3 1 1 5 0
Algoritmo do Banqueiro
● Exemplo anterior é um estado de segurança, cada processo adquire o máximo de seus recursos e, em seguida, finaliza:○ P1 adquire os recursos 2 A, 1 B e 1 D, atingindo o seu máximo
■ Disponíveis: 1 A, nenhum B, 1 C e 1 D○ P1 termina, retornando os recursos 3 A, 3 B, 2 C e 2 D
■ Disponíveis 4 A, 3 B, 3 C e 3 D○ P2 adquire 2 B e 1 D recursos extras, então termina, retornando
todos os seus recursos■ Disponíveis: 5 A, 3 B, 6 C e 6 D
○ P3 adquire os recursos 4 C e termina■ Disponíveis: 6 A, 4 B, 7 C e 6 D
● Todos os processos foram capazes de terminar, esse estado é seguro.
Exemplo de Algoritmo do Banqueirocom múltiplos recursos
Todos os recursosEm usoDisponível
Referências
● Junior, C., Sebastião, R., Ledur, Lopes, C., Morais, de, I. S. Sistemas Operacionais. 9788595027336. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595027336/. Accesso em: 24 Mar 2020
● TANENBAUM, Andrew S.; MACHADO FILHO, Nery. Sistemas operacionais modernos. Prentice-Hall, 1995.
Exercícios de Fixação
● Exemplifique esquemas de deadlock (impasse) no nosso cotidiano.
● Quando ocorre o deadlock, o que os processos não conseguem fazer?
● Quais as condições obrigatórias para ocorrer deadlock?● Existem formas de prever e tratar o deadlock? Cite e
exemplifique.