1) O documento discute o problema de deadlocks em sistemas operacionais, onde conjuntos de processos bloqueados aguardam recursos mantidos uns pelos outros.
2) São apresentadas técnicas para prevenir deadlocks, como exclusão mútua, posse e espera, não preempção e impedimento de ciclos de espera.
3) Métodos para detecção e recuperação de deadlocks incluem manter grafos de recursos e espera para identificar ciclos, e matar processos ou retrocedê-los para quebrar os cic
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
Gerência de Processos: Deadlocks
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
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
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
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]
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
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.
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