Você está na página 1de 26

Sistemas Operacionais

Professor: Me. Gerson Vieira Albuquerque Neto


Curso: Sistemas de Informação
4º Semestre
Deadlocks

Aula 17
Deadlock

o Definição forma:
• Processos estão em deadlocks se cada processo estiver esperando por um evento que somente
outro processo no conjunto pode causar
o Muitas vezes, um processo espera por um recurso que outro processo nesse conjunto
detém
o Condições
• Exclusão Mútua
▪ Um recurso só pode estar alocado para um processo em um determinado momento
• Uso e espera (hold and wait)
▪ Processos que já possuem algum recurso podem requerer outros
• Não preempção
▪ Recursos já alocados não podem ser retirados, só o próprio processo pode liberá-los.
• Espera Circular
▪ Um processo espera por recursos alocados a outro processo, em uma cadeia circular.

3
Detecção e recuperação

o Permite que os deadlocks ocorram, tenta detectar as causas e solucionar a situação

o Algoritmos:
• Detecção com um recurso de cada tipo.
• Detecção com vários recursos de cada tipo.
• Recuperação por meio de preempção
• Recuperação por meio de rollback (voltar ao passado)
• Recuperação por meio de eliminação de processos

4
Detecção com um único recurso

o Detecção e recuperação
• Definição
• Detecção
• Recuperação

5
Detecção com Vários Recursos

o Vários Processos: P={P1 ... Pn}


o M Classes diferentes de recursos
o Ei recursos da classe i( 1 ≤ i ≤ m)
o Usamos um vetor de recursos existentes – E
o Contém o número total de cada recurso existente
• Se a classe 1 for impressora, e R1 = 2, então existem duas impressoras

6
Detecção com Vários Recursos

o Vetor de Recursos disponíveis (A):


• Ai → quantidade do recurso disponível no momento
• Se ambas as impressoras estiverem alocadas, A1 = 0

o Duas Matrizes:
• C: matriz de alocação corrente
▪ Cij: número de recursos j mantidos pelo processo i
• R: matriz de requisições
▪ Rij: número de recursos j que o processo i deseja para concluir sua requisição

7
Detecção com Vários Recursos

o Três processos:
• P1 usa uma impressora
• P2 usa duas unidades de fita e uma de CD-ROM
• P3 usa um plotter e duas impressoras
• Cada processo pode precisar de outros recursos

8
Detecção com Vários recursos

o Desafios
• Precisa saber de antemão que recursos serão requisitados
• Quando procurar pelos deadlocks:
▪ Toda vez que um requerimento é feito
▪ A cada K minutos
▪ Quando o uso da CPU caiu abaixo de um valor

o Quando há muitos processos em deadlock, poucos processos estão em execução, e o


uso da CPU irá cair

9
Recuperação de Deadlocks

o Após a detecção, pode ser iniciada uma ação para se recuperar dele

o Possibilidades:
• Por meio da preempção
▪ Retirar temporariamente um recurso de um processo e entrega-lo a outro
▪ Depende muito da natureza do recurso
▪ Frequentemente difícil ou impossível

10
Recuperação por Rollback

o O estado de cada processo e o uso do recurso é armazenado em um arquivo de


verificação
• Checkpoint file

o Novas checagens armazenadas aos novos arquivos à medida que o processo executa

o Criação de um histórico

o Quando ocorre um deadlock


• realiza o retorno para o estado anterior, antes de adquirir o recurso que causou o deadlock
• Usando o checkpoint file apropriado

o O trabalho realizado até esse ponto é perdido, pois o rollback retorna ao ponto em que
não possuía o recurso.

11
Recuperação por eliminação do Processo

o Um ou mais processos que estão no ciclo com deadlock são interrompidos

o Talvez isso evite o deadlock


• Se não, continue eliminando até quebrar o ciclo

o Melhor solução para processos que não causam muito prejuízo

o Ex.1: compilação: Sem problemas


o Ex.2: atualização de uma base de dados – problemas

12
Evitar Dinamicamente

o Evitar um processo em tempo de execução (Runtime)

o Alocação de recursos na medida em que se fazem necessário

o Escalonamento cuidados → alto custo

o Conhecimento dos recursos que serão utilizados

o Algoritmos:
• Banqueiro para um único tipo de recurso
• Banqueiro para vários tipos de recursos

o Usam a noção de Estados Seguros e inseguros

13
Evitar Dinamicamente

o Estados seguros
• não provocam deadlocks
• Há uma maneira de atender a todas as requisições
• A partir de um estado seguro, existe a garantia de que os processos terminarão

o Estados inseguros:
• podem provocar deadlocks
• Mas não necessariamente provocam
• A partir de um estado inseguro, não é possível garantir que os processos terminarão
corretamente.

14
Evitar Dinamicamente

o Usa as mesmas estruturas da detecção com vários recursos

o Um estado consiste das estruturas E, A, C e R.


• E – Existing
• A – Available
• C – Current
• R – Requirement

o Estado seguro:
• Se houver alguma ordem na qual todo processo irá terminar
• Ainda que todos peçam seu número máximo de recursos imediatamente

15
Estado Seguro

o A tem 3 instâncias, mas pode precisar de até 9

o B tem 2, e pode precisar de 4

o C tem 2 e pode precisar de 7

o Havendo um total de 10 instâncias do recurso, diante dessas necessidade, sobrarão 3.

A 3 9
B 2 4
C 2 7
Livre: 3

16
Estado Seguro

o Qual uma possível sequencia para garantir a finalização de todos os processos?


• O escalonador roda B até que ele peça mais recursos
• Quando B termina, roda C até terminar
• Agora A pode obter as 6 instâncias para terminar

A 3 9 A 3 9 A 3 9 A 3 9 A 3 9
B 2 4 B 4 4 B 0 - B 0 - B 0 -
C 2 7 C 2 7 C 2 7 C 7 7 C 0 -
Livre: 3 Livre: 1 Livre: 5 Livre: 0 Livre: 7

17
Estado Seguro

A 3 9 A 4 9 A 4 9 A 4 9
B 2 4 B 2 4 B 4 4 B - -
C 2 7 C 2 7 C 2 7 C 2 7
Livre: 3 Livre: 2 Livre: 0 Livre: 4
o Suponha agora:
• A recebe um novo recurso
• B roda até o fim
• Ficamos presos: precisamos de 5 para A ou C, mas só temos 4 livres
o Não há sequencia capaz de garantir que terminem
o A decisão que moveu do primeiro para o segundo passo levou de um estado seguro a um
inseguro
o Decisão deve ser tomada em tempo de execução

18
Estado Seguro

o Idealizado por Dijkstra (1965)

o Algoritmo de escalonamento para evitar deadlock

o Funciona como um banqueiro (SO)


• Da crédito (Recursos) aos clientes (processos)

o Verifica se um pedido leva a um estado inseguro

o Se levar, o pedido é negado, se não, é executado

19
Algoritmo do Banqueiro

o Algoritmo de alocação de recursos com prevenção de deadlocks desenvolvido por Edsger


Dijkstra
o Executado pelo SO quando um processo requisita recursos
o Testa a segurança pela simulação da alocação do máximo pré-determinado possível de
montantes de todos os recursos computacionais;
o Depois faz uma verificação de estados-seguros para testar a possibilidade de condições
de deadlock para todas as outras atividades pendentes, antes de decidir se a alocação
deve prosseguir.

20
Algoritmo do Banqueiro

o Supondo quatro processos: A, B, C, D

o O banqueiro sabe que não precisarão de todo o crédito disponível, por isso reservou 10
dos 22 para distribuir

o C pode rodar “seguramente”

o Solicitações de crédito são realizadas de tempo em tempo, em um determinado instante, a


situação é essa
• Máximo de crédito: 22

A 0 6 A 1 6
B 0 5 B 1 5
C 0 4 C 2 4
D 0 7 D 4 7
Livre: 10 Livre: 2 21
Algoritmo do Banqueiro

o Se, contudo, B fosse atendido, teríamos um estado inseguro

o Se todos os clientes pedissem o máximo, o banqueiro não poderia satisfaze-los

A 0 6 A 1 6 A 1 6
B 0 5 B 1 5 B 2 5
C 0 4 C 2 4 C 2 4
D 0 7 D 4 7 D 4 7
Livre: 10 Livre: 2 Livre: 1
Seguro Seguro Inseguro

22
Algoritmo do Banqueiro – Múltiplos Recursos

o O que aconteceria se atendêssemos a B?


o Podem ser atendidos D,A,E e C.

Impressoras
Impressoras

Unidade de

Unidade de
Processos
Processos

Unidades
Unidades

CDROM
CDROM

Plotters
Plotters

de Fita
de Fita

A 3 0 1 1 Alocados → P = (5 3 3 2) A 1 1 0 0
B 0 1 1 0 Disponíveis → A = (1 0 1 0) B 0 1 0 2
C 1 1 1 0 C 3 1 0 0
D 1 1 0 1 D 0 0 1 0
E 0 0 0 0 E 2 1 1 0
C = Recursos Alocados R = Recursos ainda
necessários
23
Algoritmo do Banqueiro

o Desvantagens:
• Pouco utilizado, pois é difícil saber quais recursos serão necessário
• Escalonamento cuidado é caro para o sistemas
• O número de processos é dinâmico e pode variar constantemente, tornado o algoritmo custoso

o Na teoria, o algoritmo é ótimo

24
Prevenção de Deadlocks

o Exclusão Mútua: Alocar recursos usandos pooling (só o printer daemon tem acesso direto
à impressora)

o Uso e espera: Processos requisitam todos os recursos de que precisam antes da


execução – difícil saber; sobrecarga.

o Não preempção: Retirar recursos dos processos – praticamente não implementável, pois
traz prejuízos

o Esperar circular: Ordenar numericamente os recursos, e realizar solicitações em ordem


numérica – não há ciclos.
• Permitir que o processo utilize apenas um recurso por vez (se quiser um segundo, deve liberar o
primeiro)

25
Exercícios

o Com base no exercício 1 da aula anterior, faça o tratamento do seu Deadlock usando a
recuperação:
• por Rollback
• Por eliminação do Processo
• Evitar Dinamicamente

26

Você também pode gostar