Você está na página 1de 49

3.

1 INE5355 Sistemas Operacionais I


Captulo 3: Deadlocks
Modelo do Sistema
Caracterizao de Deadlock
Mtodos para Tratamento de Deadlocks
Preveno de Deadlock
Evitando Deadlock
Deteco de Deadlock
Recuperao de Deadlock
Abordagem Combinada para Tratamento de Deadlock
3.2 INE5355 Sistemas Operacionais I
Recursos
Tipos de Recursos R
1
, R
2
, . . ., R
m
ciclos de UCP, espao de memria, dispositivos de E/S
Processos precisam acessar recursos ordenadamente
Supor que um processo mantm um recurso A
No mesmo tempo outro processo mantm B e requisita A
Os dois so bloqueados e permanecem assim
3.3 INE5355 Sistemas Operacionais I
Recursos (1)
Deadlocks ocorrem quando
Processos tem garantido acesso exclusivo aos dispositivos
Estes dispositivos so referidos como recursos
Recursos preemptveis
Podem ser retirados de um processo sem efeitos negativos
Recursos no-preemptveis
Causa falha do processo se forem retirados do mesmo
3.4 INE5355 Sistemas Operacionais I
Recursos (2)
Cada processo utiliza um recurso como segue:
requisita
usa
Libera
Deve esperar se requisio rejeitada
Processo requisitante pode ser bloqueado
Pode falhar com cdigo de erro
3.5 INE5355 Sistemas Operacionais I
O Problema Deadlock
Definio formal:
Um conjunto de processos esta em deadlock se
cada processo do conjunto est esperando por um
evento que somente outro processo no conjunto
pode causar.
Usualmente o evento a liberao de um recurso
Nenhum dos processos pode:
executar
Liberar recurso
Ser acordado
3.6 INE5355 Sistemas Operacionais I
Caracterizao de Deadlock
Excluso Mtua:
Cada recurso alocado a apenas um processo por vez ou
livre
Manter e esperar:
processos mantendo recurso podem requisitar recursos
adicionais.
Sem preempo:
um recurso previamente garantido no pode ser retirado do
processo
Espera Circular:
Deve haver uma cadeia circular de 2 ou mais processos
Cada um esta esperando por recurso mantido pelo prximo
membro da cadeia
Deadlock pode existir se 4 condies acontecem simultaneamente.
3.7 INE5355 Sistemas Operacionais I
3.8 INE5355 Sistemas Operacionais I
3.9 INE5355 Sistemas Operacionais I
Grafo de Alocao de Recursos
V particionado em 2 tipos:
P = {P
1
, P
2
, , P
n
}, conjunto dos processos no sistema.
R = {R
1
, R
2
, , R
m
}, conjunto dos tipos de recursos no
sistema.
Arco de requisio arco direto P
1
R
j
Arco de atribuio arco direto R
j
P
i
Um conjunto de vertices V e um conjunto de arcos A.
3.10 INE5355 Sistemas Operacionais I
Grafo de Alocao de Recursos (Cont.)
Processo
Recurso com 4 instncias
P
i
requisita instncia de R
j
P
i
possui uma instncia de R
j
P
i
P
i
R
j
R
j
3.11 INE5355 Sistemas Operacionais I
Exemplo: Grafo de Alocao de Recursos
3.12 INE5355 Sistemas Operacionais I
Grafo de Alocao de Recursos c/ Deadlock
3.13 INE5355 Sistemas Operacionais I
Grafo de Alocao de Recursos c/ ciclo .
3.14 INE5355 Sistemas Operacionais I
Fatos
Se o grafo no contm ciclos sem deadlock.
Se o grafo contm um ciclo
Se apenas uma instncia por tipo de recurso, deadlock.
Se vrias instncias por tipo de recurso, possibilidade de
deadlock.
3.15 INE5355 Sistemas Operacionais I
Estratgias para Tratar Deadlocks
Assegurar, atravs da preveno, que o sistema nunca
vai entrar em estado de deadlock.
Permitir que o sistema entre em estado de deadlock e
ento detectar e recuperar.
Evitar, atravs da alocao cuidadosa dos recursos.
Ignorar o problema e fazer de conta que deadlocks
nunca ocorrem no sistema.
3.16 INE5355 Sistemas Operacionais I
Modelagem de Deadlock
Ocorrncia
3.17 INE5355 Sistemas Operacionais I
Modelagem de Deadlock
Evitando
3.18 INE5355 Sistemas Operacionais I
O Algoritmo da Avestruz
Faz de conta que no existe problema
Razovel se
deadlocks ocorrem muito raramente
Custo de preveno muito alto
UNIX and Windows utilizam esta abordagem
um compromisso entre (relao custo/benefcio)
Convenincia
Correo
3.19 INE5355 Sistemas Operacionais I
Deteco de Deadlock
Permite sistema entrar em estado de deadlock
Algoritmo de Deteco
Esquema de Recuperao
3.20 INE5355 Sistemas Operacionais I
Uma Instncia de cada tipo
Mantm grafo de alocao de recursos
Processos
Recursos
Periodicamente invocar algoritmo que procura ciclos no
grafo.
Algoritmo para detectar um ciclo no grafo requer uma
ordem de n
2
operaes, onde n o numero de vertices
no grafo.
3.21 INE5355 Sistemas Operacionais I
Exemplo: Uma Instncia de cada tipo
7 processos (A a G), 6 Recursos (R a W)
Descrio
1. O processo A possui o recurso R e requisita S
2. O processo B nada possui e requisita T
3. O processo C nada possui e requisita S
4. O processo D possui o recurso U e requisita S e T
5. O processo E possui o recurso T e requisita V
6. O processo F possui o recurso W e requisita o recurso S
7. O processo G possui o recurso V e requisita U
Pergunta: Esse sistema esta em deadlock? Se sim quais
processos esto envolvidos?
3.22 INE5355 Sistemas Operacionais I
Deteco de Ciclo
3.23 INE5355 Sistemas Operacionais I
Algoritmo de Deteco de Ciclo
Utiliza estrutura L-lista, os arcos so marcados para indicar que
j foram inspecionados.
Passos do algoritmo:
1. Para cada nodo N no grafo execute os 5 passos seguintes em
que N o nodo inicial.
2. Inicialize L como uma lista vazia e assinale todos os arcos como
desmarcados
3. Insira o nodo atual no final da lista L e verifique se o nodo agora
aparece em L 2 vezes. Sim, grafo contm ciclo (assinalado em L),
fim.
4. A partir do referido nodo, verifique se existe algum arco de sada
desmarcado. Sim, v para 5. No, v para 6.
5. Escolha aleatriamente um arco de sada desmarcado e marque-
Ento siga esse arco para obter o novo nodo atual e v para 3
6. O final foi alcanado. Remova-o e volte para o nodo anterior isto
aquele que era atual antes desse marque-o como atual e v
para 3. Se esse for o nodo inicial, o grafo no conter ciclo algum
e o algoritmo terminar.
3.24 INE5355 Sistemas Operacionais I
Vrias Instncias de cada tipo
Na existncia de vrias cpias de um recurso, o mtodo
diferente, envolvendo estruturas de dados do tipo
vetores e matrizes:
Vetor de recursos existentes, nmero total de instncias de
cada recurso.
Vetor de recursos disponveis : um vetor m indica o numero
de recursos disponveis de cada tipo.
Matriz de Alocao Atual: uma matriz n x m define o
numero de recursos de cada tipo atualmente alocados para
cada processo.
Matriz de Requisies: uma matriz n x m indica a requisio
atual de cada processo. Se Request [i
j
] = k, ento processo
P
i
esta requisitando mais k instncias do recurso R
j
.
Condio invariante :
Somatrio das instncias j alocadas + instncias ainda
disponveis igual instncias existentes
3.25 INE5355 Sistemas Operacionais I
Vrias Instncias de cada tipo
3.26 INE5355 Sistemas Operacionais I
Algoritmo Vrias Instncias
O algoritmo se baseia na comparao de vetores
Inicialmente, todos os processos esto desmarcados, a
marcao dos processos indica que esta ok.
Quando algoritmo termina, processos desmarcados
estaro em situao de deadlock.
O algoritmo segue:
1. Procure um processo desmarcado, Pi, para o qual a i-
sima linha de R seja menor ou igual correspondente de
A.
2. Se esse processo for encontrado, adicione a i-sima linha
de C correspondente de A, marque o processo e volte
para o passo 1.
3. Se no existir esse processo o algoritmo terminar.
3.27 INE5355 Sistemas Operacionais I
Exemplo Algoritmo Vrias Instncias
Considere agora uma pequena modificao: P3 R= (2,1,0,1)
Quando procurar por deadlocks?
3.28 INE5355 Sistemas Operacionais I
Recuperao do Deadlock
Selecionar uma vitima minimizar custo.
Voltar atrs (Rollback) retornar para algum estado seguro, reiniciar
o processo para aquele estado. Para isto necessrio algum tipo de
checkpoint file para possibilitar reinicio.
Postergao (Starvation) o mesmo processo pode ser escolhido
como vitima, incluir nmero de rollback no fator custo.
A habilidade para retirar um recurso de um processo, entrega-lo a
outro processo e depois devolv-lo ao primeiro, sem que o processo
perceba, altamente dependente da natureza do recurso.
3.29 INE5355 Sistemas Operacionais I
Recuperao do Deadlock: Terminao de Processo
Abortar todos os processos em deadlock.
Abortar um processo por vez at que o ciclo de deadlock
seja eliminado.
Qual ordem deveramos escolher para abortar?
Prioridade do processo.
Quanto tempo o processo executou e quanto mais para
completar.
Recursos que o processo tem usado.
Recursos que o processo precisa para completar.
Quantos processos ser necessrio terminar.
O processo interativo ou batch?
3.30 INE5355 Sistemas Operacionais I
Evitando Deadlock
Modelo mais simples e til requer que cada processo
declare o maximo numero de recursos de cada tipo que
ele pode precisar.
O algoritmo evitar-deadlock dinamicamente examina o
estado de alocao do recurso para assegurar que a
condio espera circular no acontecer.
O estado de alocao do recurso definido pelo numero
de recursos disponveis e alocados e a demanda maxima
dos processos.
possvel um algoritmo que permita sempre evitar deadlocks
fazendo sempre a escolha certa? Requer que o sistema tenha a
priori alguma informao adicional disponvel.
3.31 INE5355 Sistemas Operacionais I
Estado seguro
Algoritmos se baseiam no conceito de estado seguro. Quando
um processo requisita um recurso disponvel, o sistema deve
decidir se alocao imediata deixa o sistema em um estado
seguro.
Sistema esta em um estado seguro se existe uma seqncia
segura para todos os processos.
Seqncia <P
1
, P
2
, , P
n
> segura se para cada P
i
, os
recursos que Pi pode ainda requisitar podem ser satisfeitos
pelos recursos disponveis atualmente + recursos mantidos por
todos P
j
, com j<I.
Se as necessidades de recursos de P
i
no esto disponveis
imediatamente, ento P
i
pode esperar at todos P
j
terminar.
Quando P
j
termina, P
i
pode obter os recursos necessrios,
executar, retornar recursos alocados e terminar.
Quando P
i
terminar, P
i+1
pode obter seus recursos necessrios e
assim em diante.
3.32 INE5355 Sistemas Operacionais I
Fatos
Se um sistema esta em um estado seguro sem
deadlocks.
Se um sistema esta em um estado inseguro
possibilidade de deadlock.
Evitar assegurar que um sistema nunca ir entrar em
um estado inseguro.
3.33 INE5355 Sistemas Operacionais I
Estado seguro, inseguro, deadlock
3.34 INE5355 Sistemas Operacionais I
Algoritmo Banqueiro
Um algoritmo de escalonamento que pode evitar deadlocks,
Dijkstra(1965), uma extenso do algoritmo de deteco de
deadlock para uma instncia.
O modelo : um banqueiro de uma pequena cidade pode
negociar com um grupo de clientes para os quais ele libera
linhas de crdito.
O que o algoritmo faz verificar se a liberao de uma
requisio capaz de levar a um estado inseguro.
Sim, requisio negada
No, requisio atendida
O banqueiro sabe que nem todos os clientes precisam
imediatamente de todas as suas unidades de crdito, assim ele
tem menos unidades do que o total necessrio.
3.35 INE5355 Sistemas Operacionais I
Algoritmo do Banqueiro para um recurso
Tres estados de alocao
Seguro
seguro
inseguro
(a) (b) (c)
3.36 INE5355 Sistemas Operacionais I
Algoritmo Banqueiro MI
Mltiplas instncias.
Cada processo deve a priori pedir mximo uso.
Quando um processo requisita um recurso ele pode ter
de esperar.
Quando um processo consegue todos seus recursos ele
deve retorna-los em um tempo finito.
3.37 INE5355 Sistemas Operacionais I
Estruturas de dados Algoritmo Banqueiro
Available: Vetor tamanho m. Se available [j] = k, existem
k instncias de recurso tipo R
j
disponveis.
Max: matriz n x m. Se Max [i,j] = k, ento processo P
i
pode requisitar no mximo k instncias do recurso tipo R
j
.
Allocation: matriz n x m. Se Allocation[i,j] = k ento P
i
esta alocando atualmente k instncias de R
j.
Need: matriz n x m. Se Need[i,j] = k, ento P
i
pode
necessitar mais k instncias de R
j
para completar suas
tarefas.
Need [i,j] = Max[i,j] Allocation [i,j].
fazer n = numero de processos, e m = numero de tipos de recursos.
3.38 INE5355 Sistemas Operacionais I
Algoritmo Segurana
1. Work e Finish so vetores de tamanho m e n,
respectivamente. Inicializar:
Work = Available
Finish [i] = false for i - 1,3, , n.
2. Encontrar i tal que :
(a) Finish [i] = false
(b) Need
i
Work
Se tal i no existe, passo 4.
3. Work = Work + Allocation
i
Finish[i] = true
passo 2.
4. Se Finish [i] == true para todos i, ento o sistema esta em
um estado seguro.
3.39 INE5355 Sistemas Operacionais I
Algoritmo Requisio-Recurso para P
i
Request = vetor requisio para processo P
i
. Se Request
i
[j]
= k ento processo P
i
quer k instncias do recurso tipo R
j.
1.Se Request
i
Need
i
passo 2. Seno, acusar condio de erro,
visto que processo excedeu seu pedido maximo.
Se Request
i
Available, passo 3. Seno P
i
deve esperar, visto
que recursos no esto disponveis.
Simula alocao dos recursos requisitados para P
i
modificando o
estado como segue:
Available = Available - Request
i
;
Allocation
i
= Allocation
i
+ Request
i
;
Need
i
= Need
i
Request
i;;
Se seguro os recursos so alocados para P
i
.
Se inseguro P
i
deve esperar e o estado anterior de
requisio-alocao restaurado
3.40 INE5355 Sistemas Operacionais I
Exemplo do Algoritmo Banqueiro
5 processos P
0
through P
4
; 3 recursos tipo A
(10 instncias),
tipo B (5 instncias) e tipo C (7 instncias).
Estruturas em T
0
:
Allocation Max Available
A B C A B C A B C
P
0
0 1 0 7 5 3 3 3 2
P
1
2 0 0 3 2 2
P
2
3 0 2 9 0 2
P
3
2 1 1 2 2 2
P
4
0 0 2 4 3 3
3.41 INE5355 Sistemas Operacionais I
Exemplo (Cont.)
O contedo da matriz Need definido por Max Allocation.
Need
A B C
P
0
7 4 3
P
1
1 2 2
P
2
6 0 0
P
3
0 1 1
P
4
4 3 1
O sistema esta em um estado seguro visto que a seqncia
< P
1
, P
3
, P
4
, P
2
, P
0
> satisfaz o critrio de segurana.
3.42 INE5355 Sistemas Operacionais I
Exemplo P
1
Requisita (1,0,2) (Cont.)
Verifica que Request Available (ou seja, (1,0,2) (3,3,2) true).
Allocation Need Available
A B C A B C A B C
P
0
0 1 0 7 4 3 2 3 0
P
1
3 0 2 0 2 0
P
2
3 0 1 6 0 0
P
3
2 1 1 0 1 1
P
4
0 0 2 4 3 1
Executando algoritmo segurana mostra que a seqncia <P
1
, P
3
,
P
4
, P
0
, P
2
> satisfaz requisito de segurana.
Requisio (3,3,0) de P
4
pode ser garantida?
Requisio (0,2,0) de P
0
pode ser garantida?
3.43 INE5355 Sistemas Operacionais I
Exemplo
O estado atual seguro?
Supor PB requisite uma impressora, pode ser atendido?
Aps alocar impressora para PB, PE requisita outra, pode
atender?
3.44 INE5355 Sistemas Operacionais I
Preveno de Deadlock
Alguns recursos (ex. dispositivo impressora) podem ser
tratados com um gerente (spool )
Apenas o gerente utiliza o dispositivo
Eliminando deadlock
Nem todos os dipositivos podem ser tratados desta forma
Princpio:
Evitar atribuir recurso quando desnecessrio
Quanto menos processos reclamendo o recurso melhor
Atacando a condio de Excluso Mtua .
3.45 INE5355 Sistemas Operacionais I
Preveno de Deadlock
Garantir que sempre que um processo requisita um
recurso, ele no mantm qualquer outro recurso.
Requer o processo requisitar e alocar todos seus recursos
antes de comear executar, ou permite processo requisitar
recursos apenas quando o processo no tem.
Processo no precisa esperar por recursos
Problemas :
Pode no ter conhecimento dos recursos necessrios
no incio
Amarra recursos que outros processos poderiam usar
Variao
Processos devem desistir dos recursos
Ento requisitar os imediatamente necessrios
Atacando a condio de Manter e esperar.
3.46 INE5355 Sistemas Operacionais I
Preveno de Deadlock (Cont.)
Se um processo que possui alguns recursos requisita
outro recurso que no pode ser imediatamente alocado
para ele, ento todos recursos mantidos so liberados.
Soluo invivel
Considere o caso de um processo liberando impressora
Trabalho est no meio do caminho
Forosamente retiram a impressora
!!??
Atacando a condio de Sem Preempo.
3.47 INE5355 Sistemas Operacionais I
Preveno de Deadlock (Cont.)
Impe ordenamento total de todos os tipos de recursos e
requer que cada processo requisite recursos em ordem
crescente de enumerao.
Atacando a condio de Espera Circular .
Se i>j, ento A no tem permisso de requisitar j
Se i<j, ento B no tem permisso de requisitar i
3.48 INE5355 Sistemas Operacionais I
Preveno de Deadlock (Cont.)
3.49 INE5355 Sistemas Operacionais I
Abordagem Combinada para Tratar Deadlock
Combinar as tres abordagens bsicas
preveno
evitar
deteco
permitindo o uso de uma abordagem otima para cada recurso
no sistema.
Particionar recursos em classes ordenadas hierarquicamente.
Classes: espao de swap, recursos de processos, memria
principal, recursos internos
Usar as tcnicas mais apropriadas para tratar deadlocks dentro
de cada classe.
Preveno (negao de manter e esperar) ou evitar;
evitar (supe que processos declarem recursos necessrios) ou
preveno (ordenao); preveno (preempo);

Você também pode gostar