DEADLOCKS IMPASSES
O que é um Deadlock? 2
O que é um Deadlock? Cenário Dois processos : Gravar CD com dados do scanner Processo A solicita o CD é autorizado Processo B solicita o scanner é autorizado Processo A solicita o scanner é negado Processo B solicita o CD é negado Processos A e B estão em deadlock Como proceder? E se os hardware fosse acessados de forma compartilhada? Não é exclusividade dos processos Banco de dados, arquivos no disco, threads,... Recursos 3
Eventos necessários para utilizar de um recurso Requisitar o recurso Se recurso não disponível quando solicitado Processo requisitante terá que esperar» Processo ficara constantemente solicitando até ser atendido Usar o recurso Utilizar o recurso Nessa etapa que os deadlock ocorrem Liberar o recurso Liberar recurso 4
Como ocorre um Deadlock? Cenários... public void process_a(){ resource_1.down(); resource_2.down(); use_both_resources(); resource_2.up(); resource_1.up(); }...... public void process_b(){ resource_1.down(); resource_2.down(); resource_2.down(); resource_1.down(); use_both_resources(); resource_2.up(); use_both_resources(); resource_1.up(); } resource_2.up();... }... Quem define a ordem de execução? 5
Natureza do recurso Preemptíveis Podem ser retirados do processo proprietário sem prejuízo Ex.: Memória Não Preemptíveis Não podem ser retirado, pois causam prejuízos Ex.: Gravação de DVD... public void process_a(){ resource_1.down(); resource_2.down(); use_both_resources(); resource_2.up(); resource_1.up(); }...... public void process_b(){ resource_2.down(); resource_1.down(); }... use_both_resources(); resource_1.up(); resource_2.up(); Recurso 2 é preemptível 6
O que é um Deadlock? Um conjunto de processos estará 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 Condiçõesnecessárias para ocorrência de deadlock Condição de exclusão mútua Processo solicita recurso de forma exclusiva Condição de posse e espera Processos que, em um determinado instante, retêm recursos concedidos anteriormente podem requisitar novos recursos Condição de não preempção Recursos não preemptível: Recursos concedidos previamente não podem ser forçadamente tomados Condição de espera circular Deve se um encadeamento de 2 ou maisprocessos Cada um encontra-se à espera de um recurso que está sendo usando pelo membro seguinte dessa cadeia 7
Como identificar um Deadlock? Visual : Modelados através de Grafos dirigidos Simbolização Quadrado - Recursos Círculo - Processos Seta - Situação (a) recurso R alocado ao processo A (b) processo B está solicitando/esperando pelo recurso S (c) processos C e D estão em deadlock sobre recursos T e U 8
Modeladosatravés de Grafos dirigidos Ordem de Execução da CPU 9
Modeladosatravés de Grafos dirigidos Ordem de Execução da CPU Sem deadlock, pois não formou um ciclo 10
Estratégia para tratar deadlock Detectar e Recuperar Evitando deadlock Prevenir Ignorar 11
Detectar e Recuperar Objetivo Não tenta prevenir a ocorrência de deadlock Deixara queocorra Ficara a procura e ao encontrá-lo ira tratá-lo Cenários Um (1) recurso de cada tipo Modelagem com grafos dirigidos Múltiplos recursos de cada tipo Baseado em matrizes 12
Detectar e Recuperar Um recurso de cada tipo Visual Utiliza a modelagem de grafos dirigidos Verificar a existência de um ou mais ciclos Real Algoritmo de detecção de deadlock Modele o grafo dirigido abaixo P. A usa R e precisa de S P. B precisa de T P. C precisa de S P. D usa U e precisa de S e T P. E usa T e precisa de V P. F usa W e precisa de S P. G usa V e precisa de U Como ficou o grafo? Deadlock? Pq? Quais processos e recursos envolvidos? 13
Detectar e Recuperar Um ciclo pode se encontrado no grafo -> Deadlock Fácil visualização, e o computador? Algoritmo para detecção de deadlock 14
Detectar e Recuperar Algoritmo para detecção de deadlock Sentido: Esquerda para direita e Superior para inferior L=[] ; L=[R] ; L=[R,A] ; L=[R,A,S] ; L=[R,A] ; L=[R] ; L=[] -> R completado L=[] ; L=[A] ; L=[A,S] ; L=[A] ; L=[] -> A completo L=[] ; L=[B] ; L=[B,T] ; L=[B,T,E] ;... L=[B,T,E,V,G,U,D] ; L=[B,T,E,V,G,U,D,S] ; L=[B,T,E,V,G,U,D] ; L=[B,T,E,V,G,U,D,T] 15
Detectar e Recuperar Múltiplos recursos de cada tipo Utiliza matrizes e vetores Tentar procurar um processo que posso ser atendido por completo 16
Detectar e Recuperar Múltiplos recursos de cada tipo Processo 1 Não satisfeito, pois não existe cd-rom disponível Processo 2 Não satisfeito, pois não existe scanner disponível Processo 3 Satisfeito -> Após executado -> A = (2 2 2 0) Com fica o resto da execução? Processo 2: Satisfeito -> Após executado -> A = (4 2 2 1) Processo 1: Satisfeito Todos os processos podem ser executados -> sem deadlock 17
Detectar e Recuperar Múltiplos recursos de cada tipo Exercício de fixação De acordo com o exemplo abaixo verifique Se esta em deadlock Como chegou a esta conclusão? 18
Detectar e Recuperar Encontramos o deadlock? E Agora? Como recuperar? Técnicas de recuperação Por Preempção Verificar se algum recurso é do tipo preemptível Por Retrocesso Checkpoints» Salva estado atual da máquina Retornar até o último checkpoint» Trabalho é perdido Por Eliminação de Processo Simples e radical Eliminar um ou mais processos presentes no ciclo 19
Estratégia para tratar deadlock Detectar e Recuperar Prevenir Ignorar 20
Evitando deadlock Objetivo Verifica se a alocação de um recurso pode gerar um deadlock Apenas liberar o recurso se a solicitação Como identificar se um recurso pode ser liberado? 21
Evitando deadlock Estados Seguros e Inseguros Utilizam a analise dos estados para alocar ou não um recurso Estado Seguro Não esta em deadlock Nenhuma ordem de execução dos processo causa deadlock Estado Inseguro Pode surgir um deadlock Não significa deadlock Existe(m) ordem de execução que gera deadlock 22
Evitando deadlock Analise dos estados Qual o estado em A? Verificar se se existe um processo que pode ser atendido por completo? 23
Evitando deadlock Estados Seguros e Inseguros DEADLOCK 24
Evitando deadlock Algoritmo do banqueiro Analisa como seria o novo estado com a solicitação do recurso Seguro: Requisição é aceita Inseguro: Requisição é negada Necessidade Saber número máximo de cada recurso que um processo poderá solicitar Número de processos Tipo dos algoritmos Para um único recurso Para múltiplos recursos Algoritmos são semelhantes aos anteriores 25
Evitando deadlock Algoritmo do banqueiro Exercício de fixação De acordo com os exemplos abaixo verifique se é seguro ou inseguro Como chegou a esta conclusão? 26
Evitando deadlock Algoritmo do banqueiro Exercício de fixação De acordo com os exemplos abaixo verifique se é seguro ou inseguro Como chegou a esta conclusão? Recursos Existentes Recursos Alocados Recursos Disponíveis 27
Evitando deadlock Algoritmo do banqueiro Teoria x Prática Teoria Funcional Prática Inútil Processos não sabem quantos recursos necessitam Número de processos dinâmicos Recursos podem sumir 28
Estratégia para tratar deadlock Detectar e Recuperar Evitando deadlock Ignorar 29
Prevenção Objetivo Garantir que os deadlock nunca iram acontecer Será possível? Como? Evitar uma das condições para ocorrência de deadlock Condição de exclusão mútua Condição de posse e espera Condição de não preempção Condição de espera circular 30
Prevenção Condição de exclusão mútua Evitar que um processo acesse o recurso diretamente Ex.: Utilização das impressoras Utilização da técnica de spoll Condição de posse espera Evitar que processo em posse de um recurso espere por outros recursos Solicitar que os processos solicitem todos os recursos no início Algoritmo do banqueiro Retêm recursos que outros processos podem estar usando 31
Prevenção Condição de não preempção Tratar todos os recursos como preemptível Considere um processo A esteja gravando um CD-ROOM No meio da gravação o processo B solicitou o CD-ROOM Processo B ira tomar o CD-ROOM do processo A Ocasionará um erro na gravação! inviável! Opção inviável 32
Prevenção Condição de espera circular Idéias Possuir apenas um recurso de cada vez Liberar o recurso atual antes de solicitar o novo Fornecer uma numeração global para os recursos Apenas pode alocar recurso se a numeração for maior que do recurso atual A requisitar recurso i e B requisitar recurso j Se i <> j e i > j» A não pode requisitar j, pois tem menor prioridade que i Se i <> j e i < j» B não pode requisitar i, pois tem menor prioridade que j Dificuldade: Como encontrar uma ordem satisfatória?» Impossível 33
Prevenção Resumo 34
Estratégias para tratar deadlock Detectar e Recuperar Evitando deadlock Prevenir 35
Ignorar Algoritmo do Avestruz Idéia Fingir que não há problema Não fazer nada! Ctrl + alt + del É aceitável se Deadlocks ocorrerem com pouca freqüência Custo da prevenção for alto 36
Outras formas de prevenção Bloqueio em duas fazes BD Bloqueio de registro e depois atualização Fases Fase um : Bloqueio Fase dois: Atualização Impasses de Comunicação Envio de dados pela rede Timeout dos pacotes Livelocks Condição de inanição (starvation) 37