Baixe o app para aproveitar ainda mais
Prévia do material em texto
BC1518-Sistemas Operacionais DeadlockDeadlock (Impasse)(Impasse) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br DeadlockDeadlock (Impasse)(Impasse) Aula 07Aula 07 Roteiro • Conceito de Deadlock; • Recursos; • Condições de ocorrência;• Condições de ocorrência; • Estratégias para tratar Deadlocks; • Prevenção de deadlocks; • Leituras Sugeridas • Exercícios Deadlocks � Na ausência de uma sincronização pode ocorrer um deadlock; � Definição: É o congestionamento de requisições de É o congestionamento de requisições de recursos no âmbito de todo o sistema que começa recursos no âmbito de todo o sistema que começa 3 Definição: É o congestionamento de requisições de É o congestionamento de requisições de recursos no âmbito de todo o sistema que começa recursos no âmbito de todo o sistema que começa quando 2 ou mais programas são colocados em espera quando 2 ou mais programas são colocados em espera até que o recurso vital se torne disponível.até que o recurso vital se torne disponível. � Normalmente não pode ser resolvido pelo S.O. e requer intervenção externa por parte do operador ou dos usuários, forçando a tomar atitudes drásticas, como provocar manualmente o término do programa. Deadlocks � Analogia: escada muito estreita em um prédio. � A escada foi construída como uma rota de fuga na eventualidade de um incêndio, 4 eventualidade de um incêndio, � As pessoas que trabalham no prédio muitas vezes preferem usá-las ao invés de esperar pelos elevadores. � O tráfego vai bem até que duas pessoas movendo em direção opostas se cruzam - há espaço para apenas uma pessoa em cada degrau. Deadlocks Analogia: Congestionamento de trânsito 5 Situação de Situação de deadlockdeadlock Deadlocks - Recursos � Existem 2 tipos de recursos: �� Preemptivos:Preemptivos: podem ser retirados do processo sem prejuízos; Exemplo: Memória – 2 processos solicitam a 6 � Exemplo: Memória – 2 processos solicitam a impressão (sistema time-sharing) � Processo A obtém a impressora; � CPU retira processo A e processo B tenta obter a impressora; � Situação de deadlock; � Envia processo B para disco e carrega o processo A na memória – elimina o deadlock; Deadlocks �� NãoNão--preemptivos:preemptivos: não podem ser retirados do processo => causam prejuízos; � CD-ROM; 7 � Processo A começou a gravar um CD-ROM, � Retirar repentinamente do processo A o gravador de CD e passar a um outro processo, � Resultará em um CD com erros. � Deadlocks ocorrem com esse tipo de recurso; Deadlocks �� ComoComo éé aa seqüênciaseqüência dede eventoseventos parapara utilizaçãoutilização dede umum recursorecurso compartilhado?compartilhado? � Requisição do recurso; � Utilização do recurso; 8 � Utilização do recurso; � Liberação do recurso; �� SeSe nãonão estiverestiver disponível,disponível, oo queque podepode ocorrer?ocorrer? � Processo que requisitou o recurso fica bloqueado até que o recurso seja liberado; � Processo que requisitou o recurso falha e depois de um certo tempo tenta novamente requisitar o recurso; Deadlocks - Aquisição typedef int semaphore; semaphore recurso_1; semaphore recurso_2; void processoA(void){ down(&recurso_1); typedef int semaphore; semaphore recurso_1; semaphore recurso_2; Possibilidade de Impasse 9 down(&recurso_1); down(&recurso_2); Usar_ambos_itens( ); up(&recurso_2); up(&recurso_1); } void processoB(void){ down(&recurso_1); down(&recurso_2); Usar_ambos_itens( ); up(&recurso_2); up(&recurso_1); } void processoA(void){ down(&recurso_1); down(&recurso_2); Usar_ambos_itens( ); up(&recurso_2); up(&recurso_1); } void processoB(void){ down(&recurso_2); down(&recurso_1); Usar_ambos_itens( ); up(&recurso_1); up(&recurso_2); } Condições de ocorrênciaCondições de ocorrência Deadlocks � Condições para ocorrer um deadlock: � Analogia com a escada: � Exclusão mútua: um recurso está sendo utilizado por 11 � Exclusão mútua: um recurso está sendo utilizado por algum processo ou está disponível (escada); � Uso e espera (hold and wait): processos que já possuem algum recurso podem requer outros recursos para finalizar(duas pessoas se encontram no lance da escada); Deadlocks � Condições para ocorrer um deadlock: � Analogia com a escada: � Não-preempção: recursos já alocados não podem ser retirados do processo que os alocou; somente o processo que alocou o 12 do processo que os alocou; somente o processo que alocou o recurso pode liberá-lo (escada); � Espera Circular: Deve existir um encadeamento circular de dois ou mais processos; cada um deles encontra-se à espera de um recursos que está sendo usado pelo mebro seguinte dessa cadeia (monopoliza o recurso – ocupa um degrau e se recusa a retroceder). Modelagem de deadlocksModelagem de deadlocks � Holt (1972) as condições podem ser visualizadas através de grafos direcionados; Processo Modelagem de Deadlocks 14 Recurso a) Recurso R alocado ao Processo A b) Processo B requisita Recurso S c) Deadlock – ciclo C-T-D-U-C Aresta de alocação � Cenário 1 – Grafos de Recursos P1 requisita e obtém R11 AçãoTempo Modelagem de Deadlocks 15 P3 libera R36 P3 requisita e obtém R35 P2 libera R24 P2 requisita e obtém R23 P1 libera R12 P1 R1 R2 R3 P2 P2 Processo � Cenário 2: Processos fazem E/S quanto CPU e utiliza algoritmo de alternância circular Modelagem de Deadlocks 16 P3 requisita R16 P2 requisita R35 P1 requisita R24 P3 requisita e obtém R33 P2 requisita e obtém R22 P1 requisita e obtém R11 AçãoTempo P1 R1 R2 R3 P2 P3 Bloqueado � Cenário 2: Algoritmo de alternância circular P1 requisita e obtém R11 AçãoTempo R1 R2 R3 Modelagem de Deadlocks 17 P3 requisita R16 P2 requisita R35 P1 requisita R24 P3 requisita e obtém R33 P2 requisita e obtém R22 P1 requisita e obtém R11 P1 P2 P3 Impasse Como o SO poderia resolver esse problema? A ordem de execução seria uma solução? => P2? Estratégias para tratar deadlocksEstratégias para tratar deadlocks Deadlocks � Quatro estratégias para tratar deadlocks: � Ignorar o problema; 19 � Detectar e recuperar o problema; � Evitar dinamicamente o problema – alocação cuidadosa de recursos; � Prevenir o problema por meio da não satisfação de uma das quatro condições citadas anteriormente; Deadlocks � Ignorar o problema: � “Enterre sua cabeça na areia e finja que nada está acontecendo” (ALGORITMO DO AVESTRUZ). Profissionais reagem diferentemente a essa 20 � Profissionais reagem diferentemente a essa estratégia? � Matemáticos consideram inaceitável e devem ser evitados / Engenheiros não aceitam perder desempenho para eliminar deadlock � A maioria dos S.O. sofre potencialmente de deadlocks que normalmente não são detectados e muito menos anulados. Deadlocks � Exemplo: � Sistema UNIX tem 100 entradas na tabela de processos; 10 programas estão sendo executados; 21 � 10 programas estão sendo executados; � cada um precisa criar 12 (sub)processos; � Após cada processo ter criado 9 outros processos, os 10 originais e os 90 novos esgotaram a capacidade da tabela. � Cada processo entra em um laço infinito de execução de fork e falha, ou seja, ocorre uma situação de deadlock. Deadlocks � Maioria do S.O. (Windows e Unix) ignora o problema, supondo que a maior parte dos usuários preferiria um deadlock ocasional a uma regra que restrinja cada usuário somente a um processo. 22 restrinja cada usuário somente a um processo. Problema: � Custo é alto – implica restrições não convencionais de processos (criarconjunto de regras). Deadlocks Detectar e Recuperar o problema: � Permite que os deadlocks ocorram, tenta detectar as causas e solucionar a situação; Utilizados em computadores de grande porte (Mainframe); 23 � Utilizados em computadores de grande porte (Mainframe); � Algoritmos: � Detecção com um recurso de cada tipo; � Detecção com vários recursos de cada tipo; � Recuperação por meio de preempção; � Recuperação por meio de rollback (volta ao passado); � Recuperação por meio de eliminação de processos. Deadlocks � Detecção com um recurso de cada tipo: � Tem um recurso de cada tipo: ploter, impressora, CD � Se houverem ciclos, existem potenciais deadlocks; Situação: com 7 processosSituação: com 7 processos PA usa R e precisa de S; 24 PA usa R e precisa de S; PB precisa de T; PC precisa de S; PD usa U e precisa de S e T; PE usa T e precisa de V; PF usa W e precisa de S; PG usa V e precisa de U; Modelagem: Grafo de recursos Deadlocks � Detecção com um recurso de cada tipo: � Resposta através da construção de um grafo; � Se houverem ciclos, existem potenciais deadlocks; Processos: A-G Recursos: R-W Situação:Nós Sistema => 7 processosSistema => 7 processos P L O T E r 25 CicloCiclo R S W U T V A C F D B E G Recursos: R-W Situação: PA usa R e precisa de S; PB precisa de T; PC precisa de S; PD usa U e precisa de S e T; PE usa T e precisa de V; PF usa W e precisa de S; PG usa V e precisa de U; Pergunta: Há possibilidade de deadlock? Nós Arresta alocado precisa � Algoritmo (aplicação): começa utilizando uma lista L � Execução a partir de R->A,B,C,S,D,T,E,F (ciclo para); 1) Início R => L=[R, A ], L=[R, A, S] =>S não tem arco de saída (retorna); Deadlocks 26 R S W U T V A C F D B E G Arcos INÍCIO precisa saída (retorna); 2) Início A => L=[A,S] S não tem arco de saída (retorna); 3) Início B => L=[B,T,E,V,G,U,D] = escolher S vamos para um nó sem saída e retornamos em D 4) Caso contrário: L=[B,T,E,V,G,U,D,T] =>ciclo Deadlocks � Detecção com vários recursos de cada tipo (baseado em matrizes): � Classes diferentes de recursos – vetor de recursos existentes (E): � Classe1= unidade de fita e E1=2 => existem duas unidades 27 � Classe1= unidade de fita e E1=2 => existem duas unidades de fita; � Vetor de recursos disponíveis (A): � Se ambas as unidades de fita estiverem alocadas, A1=0; � Duas matrizes: � C: matriz de alocação corrente; � Cij: número de instâncias do recurso j entregues ao processo i; � R: matriz de requisições; � Rij: número de instâncias do recurso j que o processo i precisa; Deadlocks Recursos existentes 4 unidades de fita; 2 plotter; 3 impressoras; 1 unidade de CD-ROM Recursos disponíveis A = (2 1 0 0) UF P I UCD Matriz de requisições UF P I UCD 28 Recursos existentes E = (4 2 3 1) Três processos: P1 usa uma impressora; P2 usa duas unidades de fita e uma de CD-ROM; P3 usa um plotter e duas impressoras; Cada processo precisa de outros recursos (R); Recursos UF P I UCD C = 0 0 1 0 2 0 0 1 0 1 2 0 Matriz de alocação P1 P2 P3 UF P I UCD R = 2 0 0 1 1 0 1 0 2 1 0 0 P1 P2 P3 UF P I UCD Deadlocks 4 unidades de fita; 2 plotter; 3 impressoras; 1 unidade de CD-ROM Requisições (satisfazer a condição): P1 requisita 2 unidades de fita e um CD-ROM (não pode atender); P2 requisita 1 unidade de fita e 1 impressora (não pode atender); P3 requisita duas unidades de fita e um plotter; 29 Recursos existentes E = (4 2 3 1) Recursos disponíveis A = (2 1 0 0) P3 pode rodar Após rodar P3 =>A = (2 2 2 0) C = 0 0 1 0 2 0 0 1 2 2 2 0 P1 P2 P3 R = 2 0 0 1 1 0 1 0 0 0 0 0 Matriz de requisições P1 P2 P3 UF P I UCD Matriz de alocação Deadlocks 4 unidades de fita; 2 plotter; 3 impressoras; 1 unidade de CD-ROM Requisições: P1 requisita duas unidades de fita e um CD-ROM; P2 requisita uma unidade de fita e uma impressora; 30 Recursos existentes E = (4 2 3 1) Recursos disponíveis A = (2 1 0 0) A = (2 2 2 0) P2 pode rodar A = (4 2 2 1) C = 0 0 1 0 3 0 1 1 0 0 0 0 Matriz de alocação P1 P2 P3 R = 2 0 0 1 0 0 0 0 0 0 0 0 Matriz de requisições P1 P2 P3 Deadlocks Recursos disponíveis 4 unidades de fita; 2 plotter; 3 impressoras; 1 unidade de CD-ROM Requisições: P1 requisita duas unidades de fita e um CD-ROM; 31 Recursos existentes E = (4 2 3 1) Recursos disponíveis A = (2 1 0 0) A = (2 2 2 0) A = (4 2 2 1) P1 pode rodar C = 2 0 1 1 0 0 0 0 0 0 0 0 Matriz de alocação P1 P2 P3 R = 0 0 0 0 0 0 0 0 0 0 0 0 Matriz de requisições P1 P2 P3 Deadlocks Recursos existentes Recursos disponíveis Ao final da execução, temos: 4 unidades de fita; 2 plotters; 3 impressoras; 1 unidade de CD-ROM 32 Recursos existentes E = (4 2 3 1) Recursos disponíveis A = (4 2 3 1) C = 0 0 0 0 0 0 0 0 0 0 0 0 Matriz de alocação P1 P2 P3 R = 0 0 0 0 0 0 0 0 0 0 0 0 Matriz de requisições P1 P2 P3 Deadlocks Requisições: DEADLOCK: P3 requisita duas unidade de fita, uma impressora e uma unidade de CD-ROM; 4 unidades de fita; 2 plotters; 3 impressoras; 1 unidade de CD-ROM CARO TEMPO DE CPU 33 Recursos existentes E = (4 2 3 1) Recursos disponíveis A = (2 1 0 0) impressora e uma unidade de CD-ROM; C = 0 0 1 0 2 0 0 1 0 1 2 0 Matriz de alocação P1 P2 P3 UF P I UCD R = 2 0 0 1 1 0 1 0 2 1 0 1 Matriz de requisições P1 P2 P3 UF P I UCD Deadlocks Se localizado o Impasse. O que deve ser feito? Recuperação de Deadlocks: � Por meio de preempção: possibilidade de retirar 34 � Por meio de preempção: possibilidade de retirar temporariamente um recurso de seu atual dono (processo) e entregá-lo a outro processo; � Por meio de revisão de estado: recursos alocados a um processo são armazenados em arquivos de verificação; quando ocorre um deadlock, os processos voltam ao estado no qual estavam antes do deadlock. Deadlocks Recuperação de Deadlocks: � Por meio de eliminação de processos: processos que estão no ciclo com deadlock são retirados do ciclo; processos que não causam algum efeito negativo ao 35 processos que não causam algum efeito negativo ao sistema; � Ex1.: compilação – sem problemas; � Ex2.: atualização de um base de dados – problemas nos registros – adiciona 1 (morto) – adicionará 2; Deadlocks � É possível evitar impasse fazendo uma escolha correta? � Evitar dinamicamente o problema: 36 � Evitar dinamicamente o problema: � Alocação individual de recursos; � Utiliza matrizes descritas anteriormente; � Escalonamento cuidadoso; � Trabalhar com Estados Seguros e Inseguros; Deadlocks � É possível evitar impasse fazendo uma escolha correta? � Algoritmos: 37 � Algoritmos: � Extensão do algoritmo de detecção de deadlocks; � Banqueiro para um único tipo de recurso; � Banqueiro para vários tipos de recursos; Deadlocks � Estados seguros: não provocam deadlocks e há uma maneira de atender a todas as requisições pendentes finalizando normalmente todos os processos; 38 processos; � Existe alguma ordem de escalonamento na qual todo o processo possa ser executado até a sua conclusão; � Estado inseguros: podem provocar deadlocks, mas não necessariamente provocam; Deadlocks � Seguro: u t i l i z a d o T o ta l s o l i c i t a d o Começa escalonando o processo B 39 72C 42B 93A 72C 44B 93A 72C -0B 93A 77C -0B 93A -0C -0B 93A Disponível: 3 Disponível: 1 Disponível: 5 Disponível: 0 Disponível: 7 u t i l i z a d o T o t a l s o l i c i t a d o Deadlocks � Inseguro (não é deadlock): � Solicitará e obterá outro recurso � Não há garantia que todos irão terminar 40 72C 42B 93A 72C 42B 94A 72C 44B 94A 72C --B 94A Disponível: 3 Disponível: 2 Disponível: 0 Disponível: 4 Começa escalonando o processo A – 1 recurso Deadlocks � Algoritmos do Banqueiro: � Idealizado por Dijkstra (1965); � Segue os seguintes princípios (analogia): Nenhum cliente receberá um empréstimo maior do que o 41 � Nenhum cliente receberá um empréstimo maior do que o capital total do banco. � Todos os clientes receberão um limite de crédito ao abrir suas contas. � Nenhum cliente poderá ultrapassar esse limite. � A soma de todos os empréstimos não poderá ultrapassar o capital total do banco. Deadlocks � Algoritmos do Banqueiro: � Considera cada requisição no momento em que ela ocorre verificando se essa requisição leva a um estado seguro; 42 estado seguro; � Se sim, a requisição é atendida, � Senão, o atendimento é adiado para um outro momento; Deadlocks � Algoritmos do Banqueiro: � Premissas adotadas por um banqueiro (SO) para garantir ou não crédito (recursos) para seus clientes (processos); 43 clientes (processos); � Nem todos os clientes (processos) precisam de toda a linha de crédito (recursos) disponível para eles; Deadlocks � Algoritmo do Banqueiro para um único tipo de recurso: Máximo de linha de crédito = 22Possui 44 A C D B 0 0 0 0 6 4 7 5 A C* D B 1 2 4 1 6 4 7 5 A C D B 1 2 4 2 6 4 7 5 Livre: 10 Livre: 1Livre: 2 Seguro Seguro Inseguro • Solicitações de crédito são realizadas de tempo em tempo; • * C é atendido e libera 4 créditos, que podem ser usados por B ou D; Deadlocks � Algoritmo do Banqueiro para um único tipo de recurso: Máximo de linha de crédito = 22Possui 45 A C D B 0 0 0 0 6 4 7 5 A C D B 1 2 4 1 6 4 7 5 A C D B* 1 2 4 2 6 4 7 5 Livre: 10 Livre: 1Livre: 2 Seguro Seguro Inseguro • Solicitações de crédito são realizadas de tempo em tempo; • * B é atendido. Em seguida os outros fazem solicitação, ninguém poderia ser atendido; Deadlocks � Algoritmo do Banqueiro para vários tipos de recursos: � Mesma idéia, mas duas matrizes são utilizadas; Recursos � E = (6 3 4 2); Alocados � P = (5 3 2 2); Disponíveis �A = (1 0 2 0); 46 C = Recursos Alocados A C D B 3 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 E 0 0 0 0 R = Recursos ainda necessários A C D B 1 3 0 0 1 1 0 1 0 0 1 1 0 0 0 2 E 2 1 1 0 Disponíveis �A = (1 0 2 0); Deadlocks � Algoritmo do Banqueiro para vários tipos de recursos: Alocados � P = (5 3 3 2); Disponíveis �A = (1 0 1 0); 47 C = Recursos Alocados A C D B 3 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 E 0 0 0 0 R = Recursos ainda necessários A C D B 1 3 0 0 1 1 0 1 0 0 1 0 0 0 0 2 E 2 1 1 0 Disponíveis �A = (1 0 1 0); Atender a solicitação de B => seguro Deadlocks � Algoritmo do Banqueiro para vários tipos de recursos: Alocados � P = (5 3 4 2); Disponíveis �A = (1 0 0 0); 48 C = Recursos Alocados A C D B 3 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 E 0 0 1 0 R = Recursos ainda necessários A C D B 1 3 0 0 1 1 0 1 0 0 1 0 0 0 0 2 E 2 1 0 0 Disponíveis �A = (1 0 0 0); • Deadlock � Solução: Adiar a requisição de E por alguns instantes; Inseguro: negar Deadlocks � Algoritmo do Banqueiro: � Desvantagens � Pouco utilizado, pois é difícil saber quais recursos serão necessários; 49 serão necessários; � O número de processos é dinâmico e pode variar constantemente tornando o algoritmo custoso (difícil de implementar); � Vantagem � Teoricamente => o algoritmo é ótimo; Deadlocks � Prevenir Deadlocks: � Atacar uma das quatro condições: Alocar todos os recursos usando um spoolExclusão Mútua Condição Abordagem 50 Ordenar numericamente os recursos; Mais atrativa de ser praticada; Espera Circular Retirar recursos dos processosNão-preempção Requisitar todos os recursos inicialmenteUso e Espera Alocar todos os recursos usando um spoolExclusão Mútua • Recursos: Preemptivo e não preemptivo • Impasses: modelagem Aula 07 - Sumário • Algoritmo do avestrutz • Detecção e recuperação de impasses • Evitando impasses • Prevenção de impasses Leituras Sugeridas • Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º edição. Editora Campus, 2008 . • TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: Pearson, 3 ed. 2010 Acesse o link abaixo: http://hostel.ufabc.edu.br/~marcelo.nascimento/ Nota de Aula http://hostel.ufabc.edu.br/~marcelo.nascimento/ Obrigado!!! 1. Considere o deadlock de tráfego indicado na figura abaixo: a) Mostre que as quatros condições para o deadlock de fato estão presentes nesse exemplo. b) Apresente uma regra simples que evite deadlock Exercícios - Deadlocks 54 b) Apresente uma regra simples que evite deadlock nesse sistema. 2. Dados que os dispositivos são todos do mesmo tipo e utilizando as definições apresentada sobre o algoritmo do Banqueiro responda às seguintes perguntas: a)Determine as requisições restantes para cada programa no sistema. Exercícios - Deadlocks 55 a)Determine as requisições restantes para cada programa no sistema. b) Determine se cada sistema é seguro ou inseguro. c) Se o sistema tiver em estado seguro, relacione a seqüência de requisições e liberações que possibilitará a execução completa de todos os processos. d) Se o sistema estiver em estado inseguro, mostre como é possível ocorrer um impasse. i)Sistema A tem 12 dispositivos; apenas 1 está disponível. Exercícios 651 Requisições restantes Máximo de requisições Dispositivos alocados Número do programa 56 204 623 742 651 ii)Sistema B tem 14 dispositivos; apenas 2 está disponível. Exercícios 851 Requisições restantes Máximo de requisições Dispositivos alocados Número do programa 57 843 932 851
Compartilhar