0
<ul>Deadlocks  (impasses) </ul>
Exemplos de recursos <ul><li>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 </li></ul>
Um conjunto de processos bloqueados cada qual mantendo um recurso e aguardando por um recurso mantido por outro processo  ...
<ul><li>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 </li></ul>(1 instância de cada tipo de recurso) <ul>Grafo de alocação de recursos </ul><ul>P i </ul><ul...
O  deadlock   pode  acontecer se 4 condições ocorrerem simultaneamente: 1)  Exclusão mútua : apenas um processo pode utili...
Grafo com mais de uma instância de cada tipo de recurso <ul>Exemplo de um grafo de alocação de recursos </ul>
Upcoming SlideShare
Loading in...5
×

Parte1f

200

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
200
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Parte1f"

  1. 1. <ul>Deadlocks (impasses) </ul>
  2. 2. Exemplos de recursos <ul><li>impressoras, drives, tabelas, memória, tempo de processador
  3. 3. Sequência de eventos necessária para usar um recurso
  4. 4. Solicitar recurso
  5. 5. Usar recurso
  6. 6. Liberar recurso
  7. 7. Se o pedido for negado …
  8. 8. Pode bloquear e esperar -> semáforo ou espera ociosa
  9. 9. Pode falhar, retornando código de erro </li></ul>
  10. 10. 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); } <ul>O problema do deadlock </ul>
  11. 11. <ul><li>Processo
  12. 12. Classe de recurso com 4 instâncias
  13. 13. Pi solicita instância de Ri
  14. 14. B solicita S
  15. 15. (1 instância de cada tipo de recurso)
  16. 16. Pi está mantendo uma instância de Ri
  17. 17. A detém (mantém) R </li></ul>(1 instância de cada tipo de recurso) <ul>Grafo de alocação de recursos </ul><ul>P i </ul><ul>R j </ul><ul>P i </ul><ul>R j </ul>
  18. 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. <ul>Caracterização do deadlock </ul>
  19. 19. Grafo com mais de uma instância de cada tipo de recurso <ul>Exemplo de um grafo de alocação de recursos </ul>
  20. 20. Grafo de alocação de recursos com um ciclo mas sem deadlock
  21. 21. Detecção de deadlocks com um recurso de cada tipo <ul><li>Quando se tem um grafo com um recurso de cada tipo, um ciclo
  22. 22. indica a presença deadlock </li></ul>
  23. 23. Fatos <ul><li>Se o grafo não contiver ciclos => não há deadlock
  24. 24. Se o grafo contiver ciclo(s): </li><ul><li>Se houver apenas uma instância de cada tipo de recurso => deadlock
  25. 25. Se houver várias instâncias de cada tipo de recurso => possibilidade de deadlock </li></ul></ul>
  26. 26. Detecção de deadlocks com vários recursos de cada tipo <ul><li>Algoritmo </li><ul><li>1) Procura-se um processo desmarcado, Pi, para o qual a i-ésima linha de R (Ri) seja
  27. 27. menor ou igual ao disponível (A): </li><ul><ul><ul><ul><ul><ul><ul><ul><li>Ri <= A? </li></ul></ul></ul></ul></ul></ul></ul></ul><li>2) Se este processo for encontrado, adiciona-se a i-ésima linha de C à A, marca-se o
  28. 28. processo como terminado e volta-se ao passo 1 </li><ul><ul><ul><ul><ul><ul><ul><ul><li>A = A+Ci </li></ul></ul></ul></ul></ul></ul></ul></ul><li>3) Se não existir esse processo, o algoritmo termina </li></ul><li>Ao final do algoritmo, se existirem processos desmarcados, significa que irá ocorrer
  29. 29. um deadlock </li></ul>
  30. 30. Detecção de deadlocks com 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. 31. Métodos para tratar deadlocks <ul><ul><li>Ignora-se o problema e finge-se que nunca vai ocorrer (algoritmo do avestruz). </li></ul></ul>usado por muitos sistemas operacionais de uso geral (Linux, Windows) <ul><ul><li>Permite-se que o sistema entre em deadlock e depois faz-se a recuperação
  32. 32. Assegura-se que o sistema nunca entrará num estado de deadlock </li></ul></ul>
  33. 33. Algoritmos de recuperação de deadlocks <ul><ul><li>Eliminação (morte) de processos </li><ul><li>grosseiro mas simples. Usual em sistemas de uso geral (Windows e Linux) mas
  34. 34. improvavél em sistemas de tempo real. </li></ul><li>Rollback (reversão de estado) </li><ul><li>necessário gravar o estado do processo periodicamente para ser utilizado
  35. 35. quando necessário ( deadlock ). e.g. pontos de recuperação do Windows </li></ul><li>Preempção </li><ul><li>retira-se um recurso de determinado processo, devolvendo-se aquele mais tarde
  36. 36. (depende da natureza do processo e do recurso) </li></ul></ul></ul>
  37. 37. Algoritmos para evitar deadlocks <ul><ul><li>Trajetória de recursos
  38. 38. Análise de estados seguros e inseguros
  39. 39. um estado é seguro se não está em deadlock e existe uma ordem de escalonamento
  40. 40. na qual todos os processos possam ser executados até sua conclusão. O sistema pode
  41. 41. garantir que todos os processos terminarão
  42. 42. estado inseguro : pode até ser que todos os processos terminem mas esta garantia
  43. 43. não pode ser dada. </li></ul></ul>
  44. 44. Algoritmos para evitar deadlocks <ul><ul><li>Trajetória de recursos </li></ul></ul>A solicita Printer A libera Printer
  45. 45. Algoritmos para evitar deadlocks <ul><ul><li>Análise de estados seguros e inseguros
  46. 46. o primeiro estado é seguro porque há uma ordem de escalonamento (BCA) que permite
  47. 47. que todos os processos terminem. Já o segundo estado é inseguro porque permite
  48. 48. apenas que B termine: A e C necessitarão de 5 recursos e estarão disponíveis apenas
  49. 49. 4. </li></ul></ul>seguro inseguro
  50. 50. Prevenção de deadlocks <ul><ul><li>Ataca-se a condição de posse-e-espera </li><ul><li>Os processos solicitam todos os seus recursos antes de começar. </li><ul><li>Processo nunca tem de esperar </li></ul><li>Problema: pode-se não saber quais são os recursos necessários já no início </li></ul></ul></ul>
  51. 51. Prevenção de deadlocks <ul><ul><li>Ataca-se a condição de espera circular </li><ul><li>Recursos ordenados
  52. 52. Pedido de recursos feitos por ordem numérica
  53. 53. Grafo de recursos nunca terá ciclos </li></ul></ul></ul>
  54. 54. <ul>[1] Real-Time Systems and Programming Languages . Burns A., Wellings A. <ul>2nd edition </ul>[2] Análise de Sistemas Operacionais de Tempo Real Para Applicações de <ul>Robótica e Automação. Aroca R. V. Dissertação de Mestrado. </ul>[3] Operating System Concepts . Silberschatz, Galvin, Gagne. 8 th edition [4] Sistemas Operacionais Modernos. Tanenbaum 2a edição </ul><ul>Bibliografia </ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×