Você está na página 1de 49

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

INE5355 Sistemas Operacionais I

3.1

Recursos
Tipos de Recursos R1, R2, . . ., Rm
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

INE5355 Sistemas Operacionais I

3.2

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

INE5355 Sistemas Operacionais I

3.3

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

INE5355 Sistemas Operacionais I

3.4

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

INE5355 Sistemas Operacionais I

3.5

Caracterizao de Deadlock
Deadlock pode existir se 4 condies acontecem simultaneamente. 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

INE5355 Sistemas Operacionais I

3.6

INE5355 Sistemas Operacionais I

3.7

INE5355 Sistemas Operacionais I

3.8

Grafo de Alocao de Recursos


Um conjunto de vertices V e um conjunto de arcos A. V particionado em 2 tipos:
P = {P1, P2, , Pn}, conjunto dos processos no sistema. R = {R1, R2, , Rm}, conjunto dos tipos de recursos no

sistema.

Arco de requisio arco direto P1 Rj Arco de atribuio arco direto Rj Pi

INE5355 Sistemas Operacionais I

3.9

Grafo de Alocao de Recursos (Cont.)


Processo

Recurso com 4 instncias

Pi requisita instncia de Rj
Pi
Rj

Pi possui uma instncia de Rj


Pi
Rj
INE5355 Sistemas Operacionais I 3.10

Exemplo: Grafo de Alocao de Recursos

INE5355 Sistemas Operacionais I

3.11

Grafo de Alocao de Recursos c/ Deadlock

INE5355 Sistemas Operacionais I

3.12

Grafo de Alocao de Recursos c/ ciclo .

INE5355 Sistemas Operacionais I

3.13

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.

INE5355 Sistemas Operacionais I

3.14

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.

INE5355 Sistemas Operacionais I

3.15

Modelagem de Deadlock Ocorrncia

INE5355 Sistemas Operacionais I

3.16

Modelagem de Deadlock Evitando

INE5355 Sistemas Operacionais I

3.17

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

INE5355 Sistemas Operacionais I

3.18

Deteco de Deadlock
Permite sistema entrar em estado de deadlock Algoritmo de Deteco Esquema de Recuperao

INE5355 Sistemas Operacionais I

3.19

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 n2 operaes, onde n o numero de vertices no grafo.

INE5355 Sistemas Operacionais I

3.20

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?

INE5355 Sistemas Operacionais I

3.21

Deteco de Ciclo

INE5355 Sistemas Operacionais I

3.22

Algoritmo de Deteco de Ciclo


Utiliza estrutura L-lista, os arcos so marcados para indicar que j foram inspecionados. Passos do algoritmo:
1. 2. 3.

4. 5. 6.

Para cada nodo N no grafo execute os 5 passos seguintes em que N o nodo inicial. Inicialize L como uma lista vazia e assinale todos os arcos como desmarcados 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. A partir do referido nodo, verifique se existe algum arco de sada desmarcado. Sim, v para 5. No, v para 6. Escolha aleatriamente um arco de sada desmarcado e marque- Ento siga esse arco para obter o novo nodo atual e v para 3 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.

INE5355 Sistemas Operacionais I

3.23

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 [ij] = k, ento processo Pi esta requisitando mais k instncias do recurso Rj.

Condio invariante :
Somatrio das instncias j alocadas + instncias ainda

disponveis igual instncias existentes

INE5355 Sistemas Operacionais I

3.24

Vrias Instncias de cada tipo

INE5355 Sistemas Operacionais I

3.25

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.

INE5355 Sistemas Operacionais I

3.26

Exemplo Algoritmo Vrias Instncias

Considere agora uma pequena modificao: P3 R= (2,1,0,1) Quando procurar por deadlocks?
INE5355 Sistemas Operacionais I 3.27

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.

INE5355 Sistemas Operacionais I

3.28

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?

INE5355 Sistemas Operacionais I

3.29

Evitando Deadlock
possvel um algoritmo que permita sempre evitar deadlocks fazendo sempre a escolha certa? Requer que o sistema tenha a priori alguma informao adicional disponvel. 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.

INE5355 Sistemas Operacionais I

3.30

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 <P1, P2, , Pn> segura se para cada Pi, os recursos que Pi pode ainda requisitar podem ser satisfeitos pelos recursos disponveis atualmente + recursos mantidos por todos Pj, com j<I.
Se as necessidades de recursos de Pi no esto disponveis imediatamente, ento Pi pode esperar at todos Pj terminar. Quando Pj termina, Pi pode obter os recursos necessrios, executar, retornar recursos alocados e terminar. Quando Pi terminar, Pi+1 pode obter seus recursos necessrios e assim em diante.

INE5355 Sistemas Operacionais I

3.31

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.

INE5355 Sistemas Operacionais I

3.32

Estado seguro, inseguro, deadlock

INE5355 Sistemas Operacionais I

3.33

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.

INE5355 Sistemas Operacionais I

3.34

Algoritmo do Banqueiro para um recurso

(a)

(b) Tres estados de alocao


Seguro seguro inseguro

(c)

INE5355 Sistemas Operacionais I

3.35

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.

INE5355 Sistemas Operacionais I

3.36

Estruturas de dados Algoritmo Banqueiro

fazer n = numero de processos, e m = numero de tipos de recursos. Available: Vetor tamanho m. Se available [j] = k, existem k instncias de recurso tipo Rj disponveis. Max: matriz n x m. Se Max [i,j] = k, ento processo Pi pode requisitar no mximo k instncias do recurso tipo Rj. Allocation: matriz n x m. Se Allocation[i,j] = k ento Pi esta alocando atualmente k instncias de Rj. Need: matriz n x m. Se Need[i,j] = k, ento Pi pode necessitar mais k instncias de Rj para completar suas tarefas.
Need [i,j] = Max[i,j] Allocation [i,j].

INE5355 Sistemas Operacionais I

3.37

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) Needi Work Se tal i no existe, passo 4.

3. Work = Work + Allocationi Finish[i] = true passo 2. 4. Se Finish [i] == true para todos i, ento o sistema esta em um estado seguro.

INE5355 Sistemas Operacionais I

3.38

Algoritmo Requisio-Recurso para Pi


Request = vetor requisio para processo Pi. Se Requesti [j] = k ento processo Pi quer k instncias do recurso tipo Rj.
1.Se Requesti Needi passo 2. Seno, acusar condio de erro, visto que processo excedeu seu pedido maximo. Se Requesti Available, passo 3. Seno Pi deve esperar, visto que recursos no esto disponveis. Simula alocao dos recursos requisitados para Pi modificando o estado como segue: Available = Available - Requesti; Allocationi = Allocationi + Requesti; Needi = Needi Requesti;; Se seguro os recursos so alocados para Pi. Se inseguro Pi deve esperar e o estado anterior de requisio-alocao restaurado

INE5355 Sistemas Operacionais I

3.39

Exemplo do Algoritmo Banqueiro


5 processos P0 through P4; 3 recursos tipo A (10 instncias), tipo B (5 instncias) e tipo C (7 instncias). Estruturas em T0: Allocation Max Available ABC ABC ABC P0 010 753 332 P1 200 322 P2 302 902 P3 211 222 P4 002 433

INE5355 Sistemas Operacionais I

3.40

Exemplo (Cont.)
O contedo da matriz Need definido por Max Allocation. Need ABC P0 743 P1 122 P2 600 P3 011 P4 431 O sistema esta em um estado seguro visto que a seqncia < P1, P3, P4, P2, P0> satisfaz o critrio de segurana.

INE5355 Sistemas Operacionais I

3.41

Exemplo P1 Requisita (1,0,2) (Cont.)


Verifica que Request Available (ou seja, (1,0,2) (3,3,2) true). Allocation Need Available ABC ABC ABC P0 010 743 230 P1 302 020 P2 301 600 P3 211 011 P4 002 431 Executando algoritmo segurana mostra que a seqncia <P1, P3, P4, P0, P2> satisfaz requisito de segurana. Requisio (3,3,0) de P4 pode ser garantida? Requisio (0,2,0) de P0 pode ser garantida?

INE5355 Sistemas Operacionais I

3.42

Exemplo

O estado atual seguro? Supor PB requisite uma impressora, pode ser atendido? Aps alocar impressora para PB, PE requisita outra, pode atender?
INE5355 Sistemas Operacionais I 3.43

Preveno de Deadlock
Atacando a condio de Excluso Mtua . 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

INE5355 Sistemas Operacionais I

3.44

Preveno de Deadlock
Atacando a condio de Manter e esperar. 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

INE5355 Sistemas Operacionais I

3.45

Preveno de Deadlock (Cont.)


Atacando a condio de Sem Preempo. 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 !!??

INE5355 Sistemas Operacionais I

3.46

Preveno de Deadlock (Cont.)


Atacando a condio de Espera Circular . Impe ordenamento total de todos os tipos de recursos e requer que cada processo requisite recursos em ordem crescente de enumerao.

Se i>j, ento A no tem permisso de requisitar j Se i<j, ento B no tem permisso de requisitar i
INE5355 Sistemas Operacionais I 3.47

Preveno de Deadlock (Cont.)

INE5355 Sistemas Operacionais I

3.48

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);

INE5355 Sistemas Operacionais I

3.49

Você também pode gostar