A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 6 Deadlocks - Impasses 6.1. Recurso

Apresentações semelhantes


Apresentação em tema: "Capítulo 6 Deadlocks - Impasses 6.1. Recurso"— Transcrição da apresentação:

1 Capítulo 6 Deadlocks - Impasses 6.1. Recurso
6.2. Introdução aos impasses 6.3. Algoritmo do avestruz 6.4. Detecção e recuperação de impasses 6.5. Evitando impasses 6.6. Prevenção de impasses 6.7. Outras questões

2 Recursos Exemplos de recursos de computador impressoras
unidades de fita Tabelas Processos precisam de acesso aos recursos numa ordem racional Suponha que um processo detenha o recurso R1 e solicite o recurso R2 e ao mesmo tempo, outro processo detém R2 e solicita R1 Ambos são bloqueados e assim permanecem

3 Recursos (1) Recurso: objeto acessado (dispositivo, trecho de informação como registro em base de dados). Pode ser adquirido, usado e liberado. Recursos preemptíveis podem ser retirados de um processo sem quaisquer efeitos prejudiciais. Ex: memória – se processo for retirado da memória, depois volta e continua processamento. Recursos não preemptíveis Os que em geral são envolvidos em deadlock vão induzir o processo a falhar se forem retirados. Ex: se gravador de CD for retirado do processo pode resultar em danos no CD sendo gravado.

4 Recursos (2) Seqüência de eventos necessários ao uso de um recurso
solicitar o recurso usar o recurso liberar o recurso Processo deve esperar se solicitação é negada processo solicitante pode ser bloqueado, ou pode falhar resultando em um código de erro tratado como espera ociosa A forma de solicitação depende do sistema

5 Aquisição de recursos (1)
Semáforos podem ser usados para gerenciar os recursos. Um único processo protegendo um ou dois recursos:

6 Aquisição de recursos (2)
Semáforos com dois processos A e B

7 Introdução aos Impasses
Definição formal: Um conjunto de processos está em situação de impasse se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poderá fazer acontecer Normalmente o evento é a liberação de um recurso atualmente retido Nenhum dos processos pode... executar liberar recursos ser acordado

8 Quatro Condições para ocorrer Impasse
Condição de exclusão mútua Em determinado instante, cada recurso ou está associado a um único processo ou está disponível; Condição de posse e espera processos que retêm recursos concedidos podem solicitar novos recursos; Condição de não preempção recursos concedidos previamente não podem ser forçosamente tomados, devem ser explicitamente liberados pelo processo que os retém; Condição de espera circular deve existir uma cadeia circular de 2 ou mais processos cada um está à espera de recurso retido pelo membro seguinte dessa cadeia

9 Modelagem de Deadlock (1)
Deadlocks podem ser modelados com grafos dirigidos Círculo: processo Quadrado: recurso 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

10 Modelagem de Deadlock (2)
(a)-(c) Processos A,B e C fazem requisições e liberações (d) – uma possível ordem de execução determinada pelo escalonador. (e)-(g) grafo resultante dos passos 1 a 3

11 Modelagem de Deadlock (3)
O ciclo indicativo de impasse (h)-(j) Grafo resultante dos passos 4 a 6

12 Modelagem de Deadlock (4)
Como poderia ser evitado o impasse: se o SO soubesse do impasse iminente, poderia suspender o processo B ao requisitar S, deixar A e C executarem ((l) a (q)) e voltar depois.

13 Modelagem de Deadlock (5)
Estratégias usadas para tratar Deadlocks Ignorar por completo o problema; Detecção e recuperação; Evitando impasses: Anulação dinâmica por meio de uma alocação cuidadosa de recursos; Prevenção: negação de uma das quatro condições necessárias; Examinaremos cada possibilidade

14 Estratégia 1: Algoritmo do Avestruz
Enterre cabeça na areia e finja que o problema não existe Engenheiros acham isto razoável se deadlocks ocorrem muito raramente custo da prevenção é alto (matemáticos acham inaceitável) UNIX e Windows seguem esta abordagem: ponderar entre conveniência e correção

15 Estratégia 2: Detecção com um Recurso de Cada Tipo
Sistema com 7 processos (A a G) e 6 recursos (R a w) Observe a posse e solicitações de recursos Um ciclo pode ser encontrado dentro do grafo, denotando deadlock: necessário algoritmo de detecção de ciclos em grafos dirigidos (alg no livro – pg 275).

16 Estratégia 2: Detecção com Múltiplos Recursos de Cada Tipo
Método para qdo há várias cópias de algum recurso. Ex: Há 2 impressoras, 3 leitoras de fita, e 2 scanners. Há n processos, m classes de recursos. Ei : recursos existentes da classe i; Ai : instâncias do recurso i disponíveis no instante. Cij : número de instâncias do recurso j alocadas ao processo i Rij : número de instâncias do recurso j requeridas pelo proces. i

17 Estratégia 2: Algoritmo de detecção - Premissas
Condição: ou o recurso está alocado ou está disponível. n Cij + Aj = Ej i=1 O algoritmo se baseia em comparação de vetores: A  B se e somente se Ai  Bi para 1  i  m. Inicialmente todos os processos estão desmarcados. A medida que o algoritmo prossegue, os processos são marcados indicando que estão aptos a completar processamento sem deadlock. No fim, os que permaneceram desmarcados estarão em deadlock.

18 Estratégia 2: Algoritmo de Detecção
Supõe que todos os processos manterão os recursos que adquirirem até que terminem. Procure um processo desmarcado, Pi, para o qual a i-ésima linha de R seja menor ou igual à correspondente de A; Se esse processo for encontrado, adicione a i-ésima linha de C à correspondente de A, marque o processo e volte para o passo 1; Se não existir este processo, o algoritmo terminará. Quando o algoritmo terminar todos os processos desmarcados, caso existam, estarão em situação de deadlock

19 Exemplo do Algoritmo de Detecção
3 processos e 4 classes de recursos. P1 e P2 não podem ser satisfeitos, mas P3 pode, executa e devolve recursos: A=( ). Agora P2 pode ser executado, ao fim devolve recursos A= ( ). P1 pode executar.

20 Detecção de Deadlock Quando rodar este algoritmo?
Toda vez que uma requisição de recurso for feita: detecta logo, mas gasta CPU demais na detecção; A cada k minutos; Sempre que uso de CPU abaixo de certo limiar: quando muitos processos estiverem em situação de impasse, restarão poucos processos aptos a continuar a execução, neste caso a CPU estará abaixo de certo limiar

21 Recuperação de Deadlock (1)
Suponha que um deadlock foi localizado. Tentemos recuperar o sistema. Recuperação através de preempção retirar um recurso de algum outro processo depende da natureza do recurso Recuperação através de reversão de estado verifica um processo periodicamente (checkpoints), salva o estado; verifica o recurso que é necessário e que processo tem o recurso; usa o estado salvo para reverter este processo em um instante anterior ao que adquiriu o recurso. Tudo que foi feito deste ponto em diante, é perdido.

22 Recuperação de Deadlock (2)
Recuperação através da eliminação de processos forma mais grosseira mas também mais simples de quebrar um deadlock elimina um dos processos no ciclo de deadlock os outros processos conseguem seus recursos escolher para matar processo que possa ser reexecutado desde seu início, ou seja, a execução corrente não influencia a próxima execução. Ex: matar um compilador implica em recomeçar a compilação sem efeitos colaterais.

23 Estratégia 3: Evitando Deadlocks Trajetórias de Recursos
Os recursos são requisitados um de cada vez. Eixo x: instruções executadas por A; Eixo y executadas por B. Em I1, A requisita impressora, em I2 requisita plotter, libera-os em I3 e I4. Até q, A executou e B não. Em q escalonador escolheu B, em r escolheu A, em s escolheu B.

24 Evitando Deadlocks - Trajetórias de Recursos
Diagonais a direita: ambos têm impressora. Diagonais a esquerda: ambos têm plotter: impossível – não entrar aí. Em t, B requisita plotter. Conceder ou não? Ao entrar neste quadrado fatalmente entrará em impasse. Seguro: execute A até I4, a partir daí qq trajetória é segura até u.

25 Estados Seguros e Inseguros (1)
A alocação deve ser feita quando é segura. Demonstração de que o estado em (a) é seguro: Processo A possui 3 instâncias de recurso e pode precisar de até 9, etc. Existe uma sequencia de alocações que permite que todos os processos sejam concluídos.

26 Estados Seguros e Inseguros (2)
Demonstração de que o estado em (b) é inseguro: Suponha que a partir de (a), A requisitou e obteve um recurso. Há uma sequencia que funcione? Se A liberar um recurso, C poderá executar e não acontecerá o deadlock, ou seja, estado inseguro pode não ser deadlock, mas não há garantia.

27 O Algoritmo do Banqueiro para um Único Recurso
Banqueiro libera linhas de crédito. Verificar se liberação leva a estado inseguro, e então não será atendida. Em (a) precisaria 22 créditos para atender todos, porém só tem em caixa 10 unidades. Três estados de alocação de recursos Seguro Seguro (C-> B ou C-> D-> A...) Inseguro (De (b) para (c) atendeu uma requisição de B e agora já não consegue atender ninguém.

28 Prevenção de Deadlock Se evitar é praticamente impossível pois requer informações acerca de requisições futuras, pode-se tentar atacar as quatro condições estabelecidas por Coffman: 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 Se uma destas condições não for satisfeita, impasses serão estruturalmente impossíveis.

29 Prevenção de Deadlock Atacando a Condição (1) Exclusão Mútua (pouco promissora…)
Deixe usarem recurso sem exclusividade! Alguns dispositivos (como uma impressora) que exigem exclusividade podem fazer uso de spool o daemon de impressão é o único que realmente usa o recurso impressora, desta forma deadlock envolvendo a impressora é eliminado Não totalmente seguro, pois ainda pode haver impasse com o espaço compartilhado dedicado ao spool. Ex: 2 processos estão “simultaneamente” preenchendo a área que pode se esgotar sem os dois concluirem e ambos não podem prosseguir…) Princípios: (1) evitar alocar um recurso quando ele não for absolutamente necessário; (2) tentar assegurar que o menor número possível de processos possa de fato requisitar o recurso

30 Prevenção de Deadlock Atacando a Condição (2) Posse e Espera
Exigir que todos os processos requisitem os recursos antes de iniciarem: se tudo estiver disponível, executa. um processo lê em um unidade de fita, e uma hora depois escreve em outra unidade de fita: bloqueio ineficiente. Problemas podem não saber quantos e quais recursos vão precisar no início da execução ( se soubesse usariam alg. do banqueiro) e também retêm recursos que outros processos poderiam estar usando. (Há sistemas em lote que na primeira linha declaram todos os recursos) Variação: processo que requisitar recurso deve desistir de todos os outros que estão em sua posse; a seguir requisitar todos os que são imediatamente necessários

31 Prevenção de Deadlock Atacando a Condição (3) Não Preempção
Considere um processo de posse de uma impressora no meio da impressão retoma a impressora a força !!?? Virtualização: possível em algumas situações: armazenar saída da impressora em disco evita impasse. Nem todos os recursos podem ser virtualizados; ex: registros de banco de dados devem ser travados para uso.

32 Prevenção de Deadlock Atacando a Condição (4) Espera Circular (1)
Gera saída em alta resolução de imagens para filmes. Recursos ordenados numericamente, requisições devem ser feitas em ordem numérica; Um grafo de recursos; com esta regra não há ciclo: ou A não pode requisitar j ou B não pode requisitar i. Problema: não há uma ordem que satisfaça a todos.

33 Resumo das abordagens para prevenir deadlock
Prevenção de Deadlock Resumo das abordagens para prevenir deadlock


Carregar ppt "Capítulo 6 Deadlocks - Impasses 6.1. Recurso"

Apresentações semelhantes


Anúncios Google