Deadlock - INF

Propaganda
Capítulo 3
Deadlocks
3.1. Recursos
3.2. Introdução a deadlocks
3.3. O algoritmo a avestruz
3.4. Detecção e recuperação de deadlock
3.5. Evitando Deadlock
3.6. Prevenindo Deadlock
3.7. Outros assuntos
1
Recursos
z
Reusáveis
–
Usado e não gasto por
um processo
z
z
z
z
z
z
z
z
Arquivo em disco
Unidade de Fita
Processadores
Canais de E/S
Memórias
Dispositivos
Semáforos
Bancos de Dados
z
“Consumíveis”
–
Criado e consumido
(destruído)
z
z
z
z
Interrupções
Sinais
Mensagens
Informação em buffers de
E/S
2
1
Recursos
z
z
Os processos precisam ter acesso aos recursos
de forma razoavelmente ordenada
Suponha que um processo tenha o recurso A e
solicite o recursos B
Ao mesmo tempo, outro processo possui B e solicita A
Ambos são bloqueados e permanecem bloqueados
–
–
3
Recursos (1)
z
Deadlocks ocorem quando …
–
–
z
Recursos “Preemptáveis”
–
z
Processos obtém aceeso exclusivo a dispositivos
Estes dispositivos são chamados recursos em geral
Podem ser retirados de um processo sem efeito danoso
Recursos “Não Preemptáveis”
–
Provocaram falha do processo se retirados
4
2
Recursos(2)
Sequencia de eventos requeridos para
usar um recursos
z
1.
2.
3.
Solicitar o recurso
Usar o recurso
Liberar o recurso
Deve esperar se solicitação é negada
z
–
–
5
Processo solicitante pode ser bloqueado
Pode falhar com código de erro
Introdução aos Deadlocks
z
Definição Formal:
Um conjunto de processos está em deadlocked se cada processo
no conjunto espera por um evento que apenas um outro processo
do conjunto pode causar
z
z
Normalmente o evento é a liberação de um recurso
Nenhum dos processo pode …
–
–
–
executar
Liberar recursos
Ser acordado
6
3
Quatro condições para Deadlock
Exclusão mútua
Toma e espera
Ausência de preempção
Espera Circular
1.
2.
3.
4.
7
Modelagem de Deadlocks
z
Modelado por grafos diretos
–
–
–
recurso R está atribuido ao processo A
processo B está solcitando/esperando recurso S
procesos C e D estão em deadlock sobre os recursos T e U
8
4
Modelagem Deadlock
Estratégias para lidar com deadlock
Ignore o problema!
Detecção e recuperação
Evite dinamicamente
1.
2.
3.
•
Alocação cuidadosa de recursos
Prevenção
4.
•
Negação de uma das quatro condições
9
Modelagem de Deadlock
A
10
B
C
Como deadlocks ocorrem
5
Modelagem de Deadlock
(o)
(p)
(q)
Como deadlock pode ser evitado
11
O algoritmo da avestruz
z
z
Finja que não há qualquer problema
Razoável se
–
–
z
z
deadlocks ocorre muito raramente
Custo de prevenção é alto
UNIX e Windows adotam este enfoque
É um custo benefício (trade off) entre
–
–
conveniencia
corretude
12
6
Detecção cm um recurso de cada
tipo (1)
z
z
Observe o propriedade do recurso e solicitações
Um ciclo pode ser observado no grafo, denotando
deadlock
13
Detecção cm um recurso
de cada tipo (1)
Estruturas de dados requeridas pelo algoritmo de
detecção de deadlock
14
7
Detecção com um
recurso de cada tipo (1)
Um exemplo para o algoritmo de detecção de
deadlock
15
Recuperação de Deadlock (1)
z
Recuperação por preempção
–
–
z
Tome um recurso de algum outro processo
Depende da natureza do recurso
Recuperação por retrocesso
–
–
–
Realize pontos de verificação periodicamente
Use este estado salvo
Reinicie o processo se for encontrado um deadlock
16
8
Recuperação de Deadlock
z
Recuperação matando processos
–
–
–
–
Forma mais simples de resolver um deadlock
Mate um dos processos no ciclo de deadlock deadlock
O outro processo obtem os recursos
Escolhar processos que possam ser re-executados do
início
17
Evitando Deadlock
trajetórias de recursos
Duas trajetórias de recursos de processos
18
9
Exemplo de trajetória
Deadlock pode ocorrer
19
Exemplo de trajetória
Deadlock não pode ocorrer
20
10
Estados seguros e inseguros
(a)
(b)
(c)
(d)
(e)
Demonstração que o estado em (a) é seguro
21
Estados seguros e inseguros(2)
(a)
(b)
(c)
(d)
Demonstração que o estado em b é inseguro
22
11
Algoritmo do banqueiro
z
Um estado é segura sse existe uma seqüência
{P1..Pn} onde a cada Pi é alocado todos os seus
recursos para execução até o término
–
z
z
Ou seja, podemos sempre rodar todos os processo até a
término a partir de um estado seguro
O algoritmo de segurança é a parte que determina
se um estado é seguro
Inicialização:
–
–
Todos os processos são considerados “não terminados”
O vetor de trabalho é inicializado com a quantidade de
recursos disponíveis : W(i) = V(i) para todo i;
23
z
REPITA: Ache um processo não terminado j
tal que N(j,i) <= W(i) para todo i.
–
–
z
Se não existe tal j, vá para FIM
SENÃO: “termine” este processo e recupere os
seus recursos: W(i) = W(i) + A(j,i) para todo i.
Então vá para REPITA
FIM: se todos os processo “terminaram”
estão este estado é seguro. Senão, é
inseguro.
24
12
z
z
Seja Q(j,i) a quantidade de recurso do tipo i
requisitada pelo processo j.
Para determinar se uma solicitação deve ser
atendida usamos o algoritmo do banqueiro:
–
–
–
Se Q(j,i) <= N(j,i) pata todo i então continue. Senão
provoque condição de erro (solicitações excedidas).
Se Q(j,i) <= V(i) para todo i então continue. Senão espere
(recurso não está disponível ainda)
“Finja” que a solicitação foi atendida e determine o novo
estado recurso-alocação:
25
z
z
z
–
V(i) = V(i) - Q(j,i) para todo i
A(j,i) = A(j,i) + Q(j,i) para todo i
N(j,i) = N(j,i) - Q(j,i) para todo i
Se o estado resultando for seguro então aloque o
recurso para o processo j. Caso contrário, o
processo j deve esperar pela solicitação Q(j,i) e
restaurar o estado antigo.
26
13
z
Temos 3 tipos de recursos com quantidades:
–
z
R(1) = 9, R(2) = 3, R(3) = 6
E temos 4 processos com estado inicial:
27
z
Temos 3 tipos de recursos com quantidades:
–
z
R(1) = 9, R(2) = 3, R(3) = 6
E temos 4 processos com estado inicial:
P1
P2
P3
P4
z
Claimed
R1 R2 R3
3 2 2
6 1 3
3 1 4
4 2 2
Allocated
R1 R2 R3
1 0 0
5 1 1
2 1 1
0 0 2
Available
R1 R2 R3
1 1 2
Suponha que P2 solicite Q = (1,0,1). A
solicitação deve ser atendida?
28
14
29
z
O estado resultante seria:
Claimed
P1
P2
P3
P4
z
R1
3
6
3
4
R2
2
1
1
2
R3
2
3
4
2
Allocated
R1
1
6
2
0
R2
0
1
1
0
R3
0
2
1
2
Available
R1 R2 R3
0 1 1
Este estado é seguro com seqüência {P2, P1, P3,
P4}. Após P2, temos W = (6,2,3) que habilita o outro
processo terminar. Daí: atende a solicitação..
30
15
31
z
No entanto, se do estado inicial, P1 solicitasse
Q = (1,0,1). O estado resultante seria:
P1
P2
P3
P4
z
32
Claimed
R1 R2 R3
3 2 2
6 1 3
3 1 4
4 2 2
Allocated
R1 R2 R3
2 0 1
5 1 1
2 1 1
0 0 2
Available
R1 R2 R3
0 1 1
Que não é seguro pois qualquer processo
para terminar precisaria uma unidade
adicional de R1. Solicitação recusada: P1 é
bloqueado.
16
O Algoritmo do Banqueiro para um recurso
(a)
(b)
z
(c)
Três estados de alocação de recursos
–
–
–
seguro
Seguro
inseguro
33
O Algoritmo do Banqueiro para Múltiplos
Recursos
34
17
Algoritmo do banqueiro : comentários
z
Um estado seguro não pode ser “deadlocked”. Mas
um inseguro não está necessariamente em
deadlock.
z
–
–
z
Ex: P1 do estado anterior (inseguro) poderia liberar
temporariamente uma unidade de R1 e R3 (retornando para
um estado seguro)
Alguns processos podem ter que esperar
desnecessariamente
Uso sub ótimo dos recursos
Todos os algoritmos que evitam deadlock assumem
que os processos são independentes: livres de
qualquer restrição de sincronização
35
Prevenção de Deadlock
Atacando a condição de exclusão mútua
z
Alguns dispositivos (como impressoras) podem
ser spooled
–
–
z
z
Nem todos os dipositivos podem ser spooled
Princípio:
–
–
36
Apenas o daemon usa o recurso impressora
Assim, deadlock para a impressora é eliminado
Evite alocar recurso quando não for absolutametne
necessário
O mínimo de processos possível deve solicitar o
recurso
18
Atacando a condição de toma e espera
z
Obrigue o processo a solicitar recurso antes de iniciar
–
z
Problemas
–
–
z
Um processo nunca irá esperar por um reccurso
Pode não saber todos os recursos que necessitará no início
Prende recursos que outros processos poderiam estar utilizando
Variação:
–
–
Processos devem liberars todos os recursos
Então solicitar todos os recurso necessários naquele instante
37
Atacar a condição de falta de preempção
z
z
NÃO É UMA OPÇÃO VIÁVEL
Considere um processo que obteve uma
impressora
–
–
–
Na metade da sua tarefa
Perde a impressora
!!??
38
19
Atacando a condição de
espera circular (1)
(a)
(b)
z
z
Recusos normalmente ordenados
Um grafo de recursos
39
RESUMO
40
20
Outros tópicos
Trava (lock) em duas fases
z
Fase 1
–
–
–
z
Se a fase um for bem sucedida, inicia a fase dois
–
–
z
z
Realiza atualizações
Libera travas
Observe a similiraridade com requerer todos os
recursos de uma vez
O algortimo funcioina se …
–
41
O processo tentar travar todos os registros que precisa, um
por vez
Se algum registro requerido estiver travado, reinicia
(nenhum trabalho real é feito na fase um)
programa pode ser parado e reiniciado
Deadlocks sem recursos
z
É possível que dois processos entrem em
deadlock
–
z
Cada um espera que o outro realize uma tarefa
Pode ocorer com semáforos
–
–
Cada processo deve fazer um down() em dois
semáforos (mutex e outro)
Se realizado na ordem errada, ocorrerá deadlock
42
21
Fome (Starvation)
z
O algoritmo para alocar um recurso
–
z
z
Funciona muito bem para processos curtos tem
um sistema
Pode fazere com que processos longos seja
adiados indefinidamente
–
z
Pode ser shortest job first
Apesar de não estar bloqueado
Solução:
–
Política First-come, first-served
43
22
Download