Deadlocks  (impasses)
Exemplos de recursos impressoras, drives, tabelas, memória, tempo de processador
Sequência de eventos necessária para usar um recurso
Solicitar recurso
Usar recurso
Liberar recurso
Se o pedido for negado …
Pode bloquear e esperar -> semáforo ou espera ociosa
Pode falhar, retornando código de erro
Um conjunto de processos bloqueados cada qual mantendo um recurso e aguardando por um recurso mantido por outro processo  do conjunto . Semaphore x=1; Semaphore y=1; void t1( void) { down( &x); down( &y); } void t2( void) { down( &y); down( &x); } O problema do  deadlock
Processo
Classe de recurso com 4 instâncias
Pi solicita instância de Ri
B solicita S
(1 instância de cada tipo de recurso)
Pi está mantendo uma instância de Ri
A detém (mantém) R (1 instância de cada tipo de recurso) Grafo de alocação de recursos P i R j P i R j
O  deadlock   pode  acontecer se 4 condições ocorrerem simultaneamente: 1)  Exclusão mútua : apenas um processo pode utilizar o recurso de cada vez; 2)  Posse e espera : um processo que detém pelo menos um recurso, está aguardando para adquirir recursos adicionais mantidos por outros processos; 3)  Não-preempção : um recurso pode ser liberado apenas voluntariamente pelo processo que o detém; 4)  Espera circular : existe um conjunto de processos {P0, P1, …, Pn} aguardando, de tal forma que P0 está aguardando um recurso mantido por P1, P1 está aguardando um recurso mantido por P2, …, Pn-1 está aguardando um recurso de Pn e Pn está  aguardando um recurso mantido por P0.  Caracterização do  deadlock
Grafo com mais de uma instância de cada tipo de recurso Exemplo de um grafo de alocação de recursos

Parte1f

  • 1.
  • 2.
    Exemplos de recursosimpressoras, drives, tabelas, memória, tempo de processador
  • 3.
    Sequência de eventosnecessária para usar um recurso
  • 4.
  • 5.
  • 6.
  • 7.
    Se o pedidofor negado …
  • 8.
    Pode bloquear eesperar -> semáforo ou espera ociosa
  • 9.
    Pode falhar, retornandocódigo de erro
  • 10.
    Um conjunto deprocessos bloqueados cada qual mantendo um recurso e aguardando por um recurso mantido por outro processo do conjunto . Semaphore x=1; Semaphore y=1; void t1( void) { down( &x); down( &y); } void t2( void) { down( &y); down( &x); } O problema do deadlock
  • 11.
  • 12.
    Classe de recursocom 4 instâncias
  • 13.
  • 14.
  • 15.
    (1 instância decada tipo de recurso)
  • 16.
    Pi está mantendouma instância de Ri
  • 17.
    A detém (mantém)R (1 instância de cada tipo de recurso) Grafo de alocação de recursos P i R j P i R j
  • 18.
    O deadlock pode acontecer se 4 condições ocorrerem simultaneamente: 1) Exclusão mútua : apenas um processo pode utilizar o recurso de cada vez; 2) Posse e espera : um processo que detém pelo menos um recurso, está aguardando para adquirir recursos adicionais mantidos por outros processos; 3) Não-preempção : um recurso pode ser liberado apenas voluntariamente pelo processo que o detém; 4) Espera circular : existe um conjunto de processos {P0, P1, …, Pn} aguardando, de tal forma que P0 está aguardando um recurso mantido por P1, P1 está aguardando um recurso mantido por P2, …, Pn-1 está aguardando um recurso de Pn e Pn está aguardando um recurso mantido por P0. Caracterização do deadlock
  • 19.
    Grafo com maisde uma instância de cada tipo de recurso Exemplo de um grafo de alocação de recursos
  • 20.
    Grafo de alocaçãode recursos com um ciclo mas sem deadlock
  • 21.
    Detecção de deadlockscom um recurso de cada tipo Quando se tem um grafo com um recurso de cada tipo, um ciclo
  • 22.
  • 23.
    Fatos Se ografo não contiver ciclos => não há deadlock
  • 24.
    Se o grafocontiver ciclo(s): Se houver apenas uma instância de cada tipo de recurso => deadlock
  • 25.
    Se houver váriasinstâncias de cada tipo de recurso => possibilidade de deadlock
  • 26.
    Detecção de deadlockscom vários recursos de cada tipo Algoritmo 1) Procura-se um processo desmarcado, Pi, para o qual a i-ésima linha de R (Ri) seja
  • 27.
    menor ou igualao disponível (A): Ri <= A? 2) Se este processo for encontrado, adiciona-se a i-ésima linha de C à A, marca-se o
  • 28.
    processo como terminadoe volta-se ao passo 1 A = A+Ci 3) Se não existir esse processo, o algoritmo termina Ao final do algoritmo, se existirem processos desmarcados, significa que irá ocorrer
  • 29.
  • 30.
    Detecção de deadlockscom vários recursos de cada tipo Exemplo E = [4 2 3 1] E: vetor de recursos existentes A = [2 1 0 0] A: vetor de recursos disponíveis ( available ) C = 0 0 1 0 C: matriz de alocação atual ( current ) 2 0 0 1 0 1 2 0 R = 2 0 0 1 R: matriz de requisições 1 0 1 0 2 1 0 0 Ri <= A? A = A+Ci R2<=A A = A+C2 A=[4 2 2 1] Ri <= A? A = A+Ci R3<=A A = A+C3 A=[2 2 2 0] Ri <= A? A = A+Ci R1<=A A = A+C1 A=[4 2 3 1] A=E !!!
  • 31.
    Métodos para tratardeadlocks Ignora-se o problema e finge-se que nunca vai ocorrer (algoritmo do avestruz). usado por muitos sistemas operacionais de uso geral (Linux, Windows) Permite-se que o sistema entre em deadlock e depois faz-se a recuperação
  • 32.
    Assegura-se que osistema nunca entrará num estado de deadlock
  • 33.
    Algoritmos de recuperaçãode deadlocks Eliminação (morte) de processos grosseiro mas simples. Usual em sistemas de uso geral (Windows e Linux) mas
  • 34.
    improvavél em sistemasde tempo real. Rollback (reversão de estado) necessário gravar o estado do processo periodicamente para ser utilizado
  • 35.
    quando necessário (deadlock ). e.g. pontos de recuperação do Windows Preempção retira-se um recurso de determinado processo, devolvendo-se aquele mais tarde
  • 36.
    (depende da naturezado processo e do recurso)
  • 37.
    Algoritmos para evitar deadlocks Trajetória de recursos
  • 38.
    Análise de estadosseguros e inseguros
  • 39.
    um estadoé seguro se não está em deadlock e existe uma ordem de escalonamento
  • 40.
    na qual todosos processos possam ser executados até sua conclusão. O sistema pode
  • 41.
    garantir que todosos processos terminarão
  • 42.
    estado inseguro :pode até ser que todos os processos terminem mas esta garantia
  • 43.
  • 44.
    Algoritmos para evitar deadlocks Trajetória de recursos A solicita Printer A libera Printer
  • 45.
    Algoritmos para evitar deadlocks Análise de estados seguros e inseguros
  • 46.
    o primeiro estadoé seguro porque há uma ordem de escalonamento (BCA) que permite
  • 47.
    que todos osprocessos terminem. Já o segundo estado é inseguro porque permite
  • 48.
    apenas que Btermine: A e C necessitarão de 5 recursos e estarão disponíveis apenas
  • 49.
  • 50.
    Prevenção de deadlocks Ataca-se a condição de posse-e-espera Os processos solicitam todos os seus recursos antes de começar. Processo nunca tem de esperar Problema: pode-se não saber quais são os recursos necessários já no início
  • 51.
    Prevenção de deadlocks Ataca-se a condição de espera circular Recursos ordenados
  • 52.
    Pedido de recursosfeitos por ordem numérica
  • 53.
    Grafo de recursosnunca terá ciclos
  • 54.
    [1] Real-TimeSystems and Programming Languages . Burns A., Wellings A. 2nd edition [2] Análise de Sistemas Operacionais de Tempo Real Para Applicações de Robótica e Automação. Aroca R. V. Dissertação de Mestrado. [3] Operating System Concepts . Silberschatz, Galvin, Gagne. 8 th edition [4] Sistemas Operacionais Modernos. Tanenbaum 2a edição Bibliografia