Gerência de Processos: Deadlocks
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Gerência de Processos: Deadlocks

  • 2,678 views
Uploaded on

Apresentar um descrição formal de deadlock, um problema que impede que conjuntos de processos colaborativos possam completar suas tarefas ...

Apresentar um descrição formal de deadlock, um problema que impede que conjuntos de processos colaborativos possam completar suas tarefas

Apresentar algumas técnicas e métodos para prevenir e impedir a ocorrência de deadlocks em sistemas computacionais

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,678
On Slideshare
2,678
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
133
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • n = número de processo m = número de recursos

Transcript

  • 1. Sistemas Operacionais I Gerência de Processos: Deadlocks Prof. Alexandre Duarte : http://alexandrend.com Centro de Informática | Universidade Federal da Paraíba Estes slides são baseados no material que acompanha o livro Operating Systems Concepts de Silberschatz, Galvin and Gagne
  • 2. Objetivos  Apresentar um descriç ão formal de deadlock, um problema que impede que conjuntos de processos colaborativos possam completar suas tarefas  Apresentar algumas técnicas e métodos para prevenir e impedir a ocorrência de deadlocks em sistemas computacionais
  • 3. O problema  Um conjunto de processos bloqueados onde cada um possui o controle de um recursos e aguarda para obter o controle de um outro recurso mantido por um outro processo no conjunto  Exemplo  O sistema possui dois discos rígidos  P1 e P2 mantém cada um o controle de um dos discos e deseja obter o controle do outro disco  Exemplo  semáforos A e B, inicializados com 1 P0 P1 wait (A); wait(B) wait (B); wait(A)
  • 4. Exemplo do cruzamento da ponte  Tráfego em apenas um sentido  Cada seç ão da ponte pode ser vista como um recurso  Se um deadlock ocorrer ele pode ser resolvido se um dos carros der ré (preempç ão e reversão)  Vários carros podem precisar dar ré caso ocorra um deadlockStarvation is possible  A maioria dos SOs não previne ou resolve deadlocks
  • 5. Caracterização de deadlocks  Exclusão mútua: apenas um processo pode utilizar um recurso por vez  Posse e espera: um processo em posse de um recurso pode esperar para adquirir recursos adicionais em posse de outros processos  Não preempç ão: um recurso só pode ser liberado voluntariamente pelo processo que o estáutilizando  Espera circular: existe um conjunto de processos bloqueados {P0, P1, …, P0} onde P0 aguarda por um recurso em posse de P1, P1 aguarda por um recurso em posse de P2, …, Pn–1 aguarda por um recurso em posse de Pn, e Pn aguarda um recurso em posse de P0.
  • 6. Modelagem do sistema  Tipos de recursos R1, R2, . . ., Rm ciclos de CPU, espaço de memória, dispositivos de E/S  Cada tipo de recurso Ri possui Wi instâncias.  Cada processo utiliza um recurso como segue:  requisiç ão  Uso  liberaç ão
  • 7. Grafo de alocação de recursos  O conjunto V possui dois tipos de vértices:  P = {P1, P2, …, Pn}, representando todos os processos no sistema  R = {R1, R2, …, Rm}, representando todos os recursos no sistema  Aresta de solicitaç ão: – uma aresta de um processo para um recurso (Pi → Rj)  Aresta de atribuiç ão: um vértice de um recurso para um processo (Rj → Pi)
  • 8. Grafo de alocação de recursos  Processo  Tipo de recurso com 4 instâncias  Pi requisita uma instância de Rj  Pi estáem posse de uma instância de Rj Pi Pi Rj Rj
  • 9. Exemplo de um grafo de alocação de recursos
  • 10. Grafo de alocação de recursos com deadlock
  • 11. Grafo com um ciclo mas sem deadlock
  • 12. Fatos básicos  Se o grafo não possui ciclos ⇒ não hádeadlock  Se o grafo possui ciclos ⇒  se háapenas uma instância por tipo de recurso então tem-se um deadlock  se hámais de uma instância por tipo de recurso então háa possibilidade de um deadlock
  • 13. Métodos para lidar com deadlocks  Garantir que o sistema nunca entraráem um estado de deadlock  Permitir que o sistema entre em deadlock e recuperar o sistema  Ignorar o problema e fingir que deadlocks nunca ocorrem (utilizado pela maioria dos sistemas operacionais, incluindo Unix)
  • 14. Prevenção de deadlocks  Exclusão mútua – não é necessária para recursos compartilháveis; precisa valer para recursos não compartilháveis  Posse e espera – precisa garantir que sempre que um processo requisite novos recursos ele não esteja em posse de nenhum outro recurso  Exigir que um processo requisite e receba todos os recursos antes de iniciar sua execução, ou permitir que um processo só requisite recursos quando não tiver nenhum recurso  Implica em baixa utilização de recurso e possibilidade de starvation
  • 15. Prevenção de dadlocks  Não-preempç ão  Se um processo que estáde posse de um recurso solicita um outro recurso que não pode ser alocado imediatamente para ele todos os recursos em seu poder são imediatamente liberados  Os recursos liberados são adicionados à lista de recursos necessários para a execuç ão do processo  O processo seráreiniciado quando puder obter novamente todos os recursos que játinha e também os novos recursos de que necessitava  Espera circular – impor uma ordenação total nos tipos de recursos e exigir que todos os processo requisitem os recursos em ordem crescente de numeração
  • 16. Impedimento de deadlocks  A forma mais simples e útil requer que cada processo declare a quantidade máxima de cada tipo de recurso disponível que ele pode precisar  O algoritmo de impedimento de deadlocks examina dinamicamente o estado da alocaç ão de recursos para garantir que jamais ocorra uma condiç ão de espera circular  O estado da alocaç ão de recursos é definido pela quantidade de recursos disponíveis e alocados e pelas demandas máximas dos processos
  • 17. Estado seguro  Quando um processo requisita um recurso disponível, o sistema precisa decidir se a alocaç ão imediata deixa o sistema em um estado seguro  O sistema estáem um estado seguro se existe uma sequência <P1, P2, …, Pn> com todos os processos do sistema na qual para cada Pi, os recursos que Pi ainda pode precisar podem ser alocados com os recursos disponíveis no momento + recursos em posse dos processos Pj, com j < i  Ou seja:  Se os recursos que Pi precisa não puderem ser fornecidos imediatamente, Pi pode esperar até que todos os processos Pj terminem  Quando Pj terminar, Pi pode obter os recursos necessários, executar, liberar os recursos e terminar  Quanto Pi termina, Pi +1 pode obter os recursos de que necessita e assim por diante
  • 18. Fatos básicos  Se o sistema estáem um estado seguro ⇒ não hádeadlock  Se o sistema estáem um estado inseguro ⇒ há possibilidade de deadlock  Impedimento ⇒ garantir que o sistema jamais entre em um estado inseguro
  • 19. Estado seguro, inseguro e de deadlock
  • 20. Algoritmos para impedimento de deadlocks  Instância única para cada recurso  Utilizar um grafo de alocaç ão de recursos  Múltiplas instâncias de algum tipo de recurso  Utilizar o algoritmo do banqueiro
  • 21. Esquema do grafo de alocação de recursos  Aresta de requisiç ão: Pi → Rj indica que um processo Pj pode vir a requisitar o recursos Rj; representada por uma linha pontilhada  Arestas de requisiç ão são convertidas em arestas de solicitaç ão quando o processo efetivamente requisita o recurso  Uma aresta de solicitaç ão é convertida em uma aresta de atribuiç ão quando o recurso é alocado para o processo  Quando o recurso é liberado pelo processo a aresta de atribuiç ão é novamente convertida para uma aresta de requisiç ão  Os processos precisam anunciar a priori para o sistema quais recursos podem vir a solicitar, criando inicialmente todas as arestas de requisiç ão
  • 22. Grafo de alocação de recursos
  • 23. Grafo de alocação de recursos inseguro
  • 24. Algoritmo do grafo de alocação de recursos  Suponha que o processo Pi requisite um recursos Rj  Essa requisiç ão só pode ser autorizado se converter a aresta de requisiç ão em uma aresta de atribuiç ão não resultar na formaç ão de um ciclo no grafo de alocaç ão de recursos
  • 25. Algoritmo do banqueiro  Múltiplas instâncias  Cada processo deve declarar a priori a utilizaç ão máxima de recursos  Quando um processo solicita recursos ele pode ter que esperar  Quando um processo obtém todos os recursos de que necessita ele deve liberá-los em uma quantidade finita de tempo
  • 26. Estruturas de dados utilizadas pelo algoritmo do banqueiro  Disponível: Vetor de comprimento m. Se disponivel [j] = k, existem k instâncias do recurso Rj disponíveis  Max: matriz n x m matrix. Se Max [i,j] = k, então o Pi pode solicitar, no máximo, k instâncias do recurso Rj  Alocaç ão: matriz n x m. Se alocaç ão [i,j] = k então o processo Pi estáatualmente em posse de k instâncias do recursos Rj  Necessidade: matriz n x m. Se necessidade [i,j] = k, então o processo Pi pode precisar de mais k instâncias do recurso Rj para poder completar sua tarefa Necessidade [i,j] = Max[i,j] – Alocação [i,j]
  • 27. Algoritmo de segurança
  • 28. Algoritmo para solicitação de recursos
  • 29. Exemplo de execução do algoritmo do banqueiro
  • 30. Exemplo de execução do algoritmo do banqueiro  O estado atual é seguro?  O que acontece se o sistema receber a seguinte sequência de solicitações?  P1 requisita (1,0,2)  P4 requisita (3,3,0)  P0 requisita (0,2,0)
  • 31. Detecção de deadlocks  Permite que o sistema entre em um estado de deadlock  Utiliza um algoritmo de detecç ão para identificar esta situaç ão  Utiliza um esquema de recuperaç ão para eliminar o deadlock
  • 32. Instância única de cada recurso  Mantem um grafo de espera  Os nó s são processos  Pi → Pj se Pi estáesperando por Pj  Um algoritmo de detecç ão de ciclos é executado periodicamente. Se existe um ciclo, existe um deadlock  Um algoritmo para detecç ão de ciclos tem complexidade O(n2 ), onde n é o número de nó s no grafo
  • 33. Grafo de alocação de recursos e grafo de espera
  • 34. Várias instâncias de um recurso  Disponível: Um vetor de comprimento m indica a quantidade de instâncias disponíveis para cada tipo de recurso  Alocaç ão: Uma matriz n x m define o número de instâncias de cada tipo de recurso alocadas para cada processo  Requisiç ão: Uma matriz n x m indicando as requisiç ões realizadas por cada processo. Se requisição [ij] = k, o processo Pi estárequisitando mais k instâncias do recurso Rj.
  • 35. Algoritmo de detecção
  • 36. Exemplo do algoritmo de detecção
  • 37. Exemplo do algoritmo de detecção  O sistema está em deadlock?  O que acontece se P2 requisitar uma instância a mais do recursos C ?
  • 38. Uso do algoritmo de detecção  Quando e com que frequência invocar o algoritmo depende de:  O quão frequente é a ocorrência de um deadlock  Quantos processos precisaram ser revertidos?  um para cada ciclo disjunto  Se o algoritmo for executado arbitrariamente ele pode encontrar vários ciclos no grafo de recursos e pode não ser possível identificar qual dentre os processos em deadlock “causou” o problema.
  • 39. Recuperação: Terminação de processos  Matar todos os processos em deadlock  Matar um processo de cada vez até que o ciclo seja desfeito  Em que ordem matar os processos?  Prioridade  Tempo de computaç ão e tempo adicional necessário para conclusão  Recursos utilizados pelo processo  Recursos necessários para que o processo conclua sua execuç ão  Quantidade de processos a ser finalizada  O processo é interativo ou de lote?
  • 40. Recuperação: Preempção de recursos  Selecionar uma vítima que minimize os custos  Retroceder o processo: voltar para algum estado seguro  Starvation – o mesmo processo pode ser sempre escolhido como vítima