deadlock - universidade federal fluminenseboeres/slidessoi/deadlock6a.pdf · deadlocks ! recursos:...
TRANSCRIPT
![Page 1: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/1.jpg)
Sistemas Operacionais
Deadlock
![Page 2: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/2.jpg)
Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo
! Uso do Recurso: ! Pedido (Request ou Open) ! Uso ! Liberação
! “Um conjunto de processos está em deadlock se cada processo no conjunto está esperando por um evento que somente um outro processo do conjunto pode causar.”
![Page 3: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/3.jpg)
Deadlocks
![Page 4: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/4.jpg)
Deadlocks
![Page 5: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/5.jpg)
Deadlocks
![Page 6: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/6.jpg)
Deadlock – recursos reutilizáveis
![Page 7: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/7.jpg)
Deadlock – recursos reutilizáveis
• 200kBytes de memória estão disponíveis para alocação, mas a seguinte sequencia de pedidos é realizada
• se o segundo pedido é realizado sem liberação, pode causar deadlock • se for um pedido bloqueante
P1
. . .
. . . Request 80 Kbytes;
Request 60 Kbytes;
P2
. . .
. . . Request 70 Kbytes;
Request 80 Kbytes;
![Page 8: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/8.jpg)
Deadlocks ! As seguintes condições podem levar a ocorrência
de deadlock ! Exclusão Mútua
! Somente um processo usa um recurso de cada vez
! Obtenção e Espera ! Um processo aloca recursos enquanto espera por outros
recursos
! Não preempção dos recursos ! Recursos não sofrem preempção – não são
tirados de processos aos quais já foram alocados
![Page 9: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/9.jpg)
Deadlocks " As condições acima são necessárias mas não
suficientes
# Cadeia fechada recurso+processo
![Page 10: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/10.jpg)
Deadlocks
Possibilidade de Deadlock Existência de Deadlock Exclusão mútua Exclusão mútua Sem preempção de recursos Sem preempção de recursos Obtenção e espera Obtenção e espera
Cadeia fechada
![Page 11: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/11.jpg)
Modelo - Grafo
! Processos são círculos e recursos são quadrados. ! O recurso R está alocado ao processo A:
! arco de R para A
! O processo A pede o recurso R
Deadlocks
R
A
A
R
![Page 12: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/12.jpg)
Deadlocks Uma cadeia circular – não é um exemplo simples
1. A pede R
2. B pede S 3. C pede T
4. A pede S
5. B pede T
6. C pede R
deadlock
R
A
S
B
T
C
![Page 13: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/13.jpg)
SO – como gerenciar a deadlocks " SO impor uma ordem na alocação de recursos para
prevenção?
" Como saber a alocação antecipada?
" Montar um grafo de recursos+ processos?
" Que mecanismo especificar?
![Page 14: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/14.jpg)
SO – como gerenciar a deadlocks
" prevenção de deadlocks
" evitar deadlock
" detecção de deadlock
![Page 15: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/15.jpg)
SO – como gerenciar a deadlocks " Prevenção de deadlocks
# através de uma política que evita uma das quatro condições
# pode ser conservativo
" Não prover recursos para evitar deadlocks
" Isso pode tornar o sistema não eficiente
![Page 16: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/16.jpg)
SO – como gerenciar a deadlocks " mecanismo executado dinamicamente: avaliação dinâmica das possíveis alocações dos recursos pelos processos. Duas alternativas são possíveis:
! Não começar um processo se levar a deadlock ! Não garantir a alocação de recurso se leva a
deadlock
![Page 17: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/17.jpg)
Evitando Deadlocks • Evitar dinamicamente: as três condições podem acontecer, mas a quarta é evitada através de decisões dinâmicas. Duas alternativas são possíveis:
! Não começar um processo se levar a deadlock ! Não garantir a alocação de recurso se leva a
deadlock ! exclusão mútua a nível de SO
! não garantir preempção de recursos
![Page 18: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/18.jpg)
Evitando Deadlocks • um exemplo, através de banker’s algorithm
• O estado do sistema é a alocação atual de recursos • estado seguro
• existe uma sequencia de alocações que não leva ao deadlock
• estado inseguro • caso contrário
![Page 19: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/19.jpg)
Evitando Deadlocks Estrutura de dados
• claim (recursos X processos) • o requisito máximo de recursos de cada processo
• para evitar deadlock deve ser previamente definido • allocation (recursos X processos)
• alocação atual de cada recurso • available (recursos)
• disponibilidade de recursos
![Page 20: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/20.jpg)
Evitando Deadlocks Na verdade estado do sistema pode ser representado
• claim (recursos X processos) • allocation (recursos X processos)
• available (recursos)
![Page 21: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/21.jpg)
Estado Seguro $ R = total de instâncias de cada recursos
$ V = o que ficou disponível depois da alocação em A
$ C-A = o que ainda será alocado durante a execução de cada processo
![Page 22: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/22.jpg)
Estado Seguro $ P2 completa sua execução
$ recursos de P2 se tornam disponíveis outra vez
$ vai haver problema de alocação para os processos restantes? $ e se os recursos de P1 forem alocados?
$ ainda precisa de (2,2,2), que está disponível. Pode alocar!.
![Page 23: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/23.jpg)
Estado Seguro $ Quando P1 terminar, retorna os recursos para disponibilidade
$ P3 pode executar suas alocações?
$ pela disponibilidade pode! Ao terminar, libera!
![Page 24: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/24.jpg)
Estado Seguro $ Quando P3 terminar
$ P4 pode alocar e terminar com sucesso
$ Logo, o estado inicial é seguro!
![Page 25: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/25.jpg)
Estado Seguro $ se o pedido de
P1 for garantido, levará a deadlock, pois agora, outros processos precisam de 1 unidade de R1
![Page 26: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/26.jpg)
Evitando Deadlocks
![Page 27: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/27.jpg)
Evitando Deadlocks
![Page 28: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/28.jpg)
Detecção de Deadlocks " Recursos são garantidos sempre que possível, mas os
pedidos de alocação não são recusados como no caso de prevenção de deadlock (que é muito conservativo)
# O SO pode checar a possibilidade a cada pedido de alocação de recurso (ou de forma menos frequente)
# baseado em informações incrementais do sistema
" tende a ser mais eficiente
# medidas são também tomadas dinamicamente
![Page 29: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/29.jpg)
Detecção de Deadlocks Informações necessárias:
" Matriz de alocação A
" Ai,j - alocação corrente em unidades do recurso j ao processo i
" Avail = (V1, V2, ...., Vm): disponibilidade de instâncias de cada recurso Vi não alocada a nenhum processo
" Q: matriz de pedidos
" Qi,j – é a quantidade de recursos do tipo j pedida pelo processo i
![Page 30: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/30.jpg)
Algoritmo de detecção de deadlock " Seja A uma matriz de alocação
# onde Ai,j é a alocação em unidades do recurso j ao processo i
" Matriz de pedidos Q
# Qi,j – é a quantidade de recursos do tipo j pedida pelo processo i
" Avail = (V1, V2, ...., Vm): quantidade de cada recurso não alocada a nenhum processo (disponibilidade do recurso)
P1 1 2 0 1 0 1 0 1 1 0
P2
R1 R2 R3 R4 R5
![Page 31: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/31.jpg)
Algoritmo de detecção de deadlock " Inicialmente, todos os processos são considerados
unmarked
" Idéia principal: satisfazer pedidos de processos de acordo com a disponibilidade
# garantir alocação até o final da execução dos respectivos processos
" Se ainda existirem processos unmarked ao final do algoritmo
# estes estão em deadlock - a detecção
# esse algoritmo não previne deadlock – algo tem que ser feito
![Page 32: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/32.jpg)
Algoritmo de detecção de deadlock ① Marque cada processo que tenha uma linha em A somente com
zeros ! nada foi alocado para aquele processo
② Inicializar W (temporário) com o vetor de disponibilidade Avail
③ Identifique um índice i tal que o processo i não esteja marcado é a i-ésima linha de Q é menor ou igual a W
Qi,j ≤ Wk 1 ≤ k ≤ m Se tal linha não existir, termine (nada pode ser atendido)
④ Se tal linha existe, marque o processo i e adicione a linha correspondente da matriz de alocação A ao vetor W
Wk = Wk + Ai,j Se tal linha não existir, volte para o passo 3 para o próxima pedido
Q e atualizando Avail
![Page 33: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/33.jpg)
Algoritmo de detecção de deadlock " Significado – os recursos são alocados sem causar
deadlock e depois são liberados (para a próxima iteração??)
# Ao identificar um processo em (3), os recursos que estão disponíveis são alocados
# Ao somar os já alocados em A com os disponíveis em W e considerá-los disponíveis
" Processo terminou e pode liberar os recursos, sem causar deadlock
![Page 34: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/34.jpg)
Algoritmo de detecção de deadlock " Deadlock está ocorrendo se e somente se
# existem processos não marcados ao final do algoritmo
# Cada processo não marcado está em deadlock
" O algoritmo se baseia no fato de que:
# Os recursos requisitados serão garantidos para o processo
# O processo executará até o final com os recursos necessários alocados
" O algoritmo não previne a ocorrência de deadlock
![Page 35: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/35.jpg)
Algoritmo de detecção de deadlock ① Marque cada processo que tenha uma linha em A somente com
zeros ! nada foi alocado para aquele processo
② Inicializar W (temporário) com o vetor de disponibilidade Avail
③ Identifique um índice i tal que o processo i não esteja marcado é a i-ésima linha de Q é menor ou igual a W
Qi,j ≤ Wk 1 ≤ k ≤ m Se tal linha não existir, termine (nada pode ser atendido)
④ Se tal linha existe, marque o processo i e adicione a linha correspondente da matriz de alocação A ao vetor W
Wk = Wk + Ai,j Se tal linha não existir, volte para o passo 3
![Page 36: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/36.jpg)
Algoritmo de detecção de deadlock matriz de alocação A
vetor Avail - o vetor W recebe esses valores
matriz Q de pedidos
P1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0
P2
R1 R2 R3 R4 R5
P3
P4
0 0 0 0 1
R1 R2 R3 R4 R5
P1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1
P2
R1 R2 R3 R4 R5
P3
P4
não marcado
não marcado
não marcado
Marcado
Passo 1
Passo 2
Passo 3: Qi,j ≤ Wk
![Page 37: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/37.jpg)
Algoritmo de detecção de deadlock W = W + Aij
e o processo P3 se torna marcado # W resultante = P3 já tinha recursos alocados, conseguiu alocar
mais, e ao terminar libera recursos. # Próxima iteração: mais processos serão marcados?
" Processos P1 e P2 estão em deadlock (não são atendidos)
0 0 0 0 1
R1 R2 R3 R4 R5
Passo 4
0 0 0 1 0
W
A3,j
0 0 0 1 1 W
![Page 38: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/38.jpg)
Abordagens de Recuperação após Detecção de processos em Deadlock
" Abortar os processos em deadlock – muito comum
" Recomeçar todos os processos em deadlock com algum checkpointing salvo anteriormente
# Checkpointing: imagem da memória do processo
# Mecanismos de rollback e restart necessários
# Perigo de dar deadlock outra vez
" Recomeçar processo a processo em deadlock, executando o algoritmo de detecção a cada processo escolhido
![Page 39: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/39.jpg)
Abordagens de Recuperação após Detecção de processos em Deadlock
" Preempção de recurso a recurso, executando o algoritmo de detecção a cada preempção
# Processos que perderam recursos podem ter que retornar a estado anterior ao de alocação do recurso
![Page 40: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/40.jpg)
Abordagens de Recuperação após Detecção de processos em Deadlock
" Qual processo em deadlock escolher?
# Aquele que menos consumiu processador
# Produziu menos resultados
# Menos recursos alocados
# Menor prioridade
![Page 41: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/41.jpg)
Estratégias Integradas - deadlock " Vantagens e desvantagens em previsão e detecção.
Então, o que fazer?
# Depende da situação
Pode-se
" Agrupar recursos em classes
" Usar uma estratégia para prevenir a ocorrência de uma cadeia circular entre as classes
" Dentro de cada classe, utilizar um outro algoritmo que está mais de acordo com aquela classe de recursos
![Page 42: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/42.jpg)
Estratégias Integradas - deadlock " Exemplo:
a) Blocos de memória no dispositivo secundário para ser utilizado em swap
b) Recursos de processos (como dispositivos)
c) Memória principal
d) Recursos internos: canais de I/O
" A ordem acima representa a ordem de alocação das classes (que está de acordo com o ciclo de vida de um processo, em geral)
![Page 43: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/43.jpg)
Estratégias Integradas - deadlock " Exemplo – dentro de cada classe
a) Alocar tudo que for necessário de uma vez
b) Evitar deadlock (não tem o recurso, não pode executar no momento)
c) Pode-se fazer swap para evitar deadlock que venha a ser previsto
d) Ordenar os pedidos de recursos podem prevenir da ocorrência de deadlock
![Page 44: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/44.jpg)
Outro Problema Clássico de Sincronização
" Jantar dos Filósofos – representa solução para dois tipos de problemas que ocorre na sua definição
# deadlock
# starvation
![Page 45: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/45.jpg)
Jantar dos Filósofos
" Cada filósofo possui um prato de espaguete
" Para comer o espaguete o filósofo precisa de dois garfos
" Existe um garfo entre cada par de pratos
" Um filósofo come ou medita
# Quando medita não interage com seus colegas
# Quando está com fome ele tenta pegar dois garfos um de cada vez. Ele não pode pegar um garfo que já esteja com outro filósofo
" Os garfos são os recursos compartilhados
![Page 46: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/46.jpg)
Jantar dos Filósofos
" Um algoritmo deve estabelecer o ritual entre os filósofos tal que:
# exclusão mutua seja garantida
" entre os garfos comuns
# deadlock seja evitado
# starvation seja evitado
![Page 47: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/47.jpg)
Jantar dos Filósofos
void main(){parbegin ( philosopher (0), philosopher (1),
philosopher (2), philosopher (3), philosopher (4), );
}
pode levar a deadlock
![Page 48: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/48.jpg)
Jantar dos Filósofos
![Page 49: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/49.jpg)
Jantar dos Filósofos
se conseguiu um garfo, está com fome
consegue o outro garfo, dependendo dos vizinhos
se conseguiu, s[i] vai para 1
se não conseguiu, s[i] está zero e fica bloqueado.
![Page 50: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/50.jpg)
Jantar dos Filósofos
id do filósofo esquerdo e direito
![Page 51: Deadlock - Universidade Federal Fluminenseboeres/slidesSOI/Deadlock6a.pdf · Deadlocks ! Recursos: hardware ou informação ! Preemptivo X não preemptivo ! Uso do Recurso: ! Pedido](https://reader034.vdocuments.mx/reader034/viewer/2022042307/5ed327dbaf1dd5535015c5aa/html5/thumbnails/51.jpg)
Pensar
1. Três processos compartilham quatro unidades de recursos que podem ser alocados e liberados um por unidade de tempo. Cada processo precisa de no máximo duas unidades de recursos. Mostre que deadlock não ocorrerá.
2. Comente sobre a seguinte solução para o problema do jantar dos filósofos:
# um filósofo com fome, pega primeiramente o garfo da esquerda;
# se o garfo da direita está disponível, ele pega o garfo e come
# senão, ele devolve o garfo da esquerda e inicia o ciclo outra vez