Você está na página 1de 31

SISTEMAS

OPERACIONAIS
Deadlock
 Os sistemas computacionais estão repletos de recursos
que podem ser usados por um processo por vez.
 Exemplo: CD-ROM, Driver de Fita Dat, etc. Ter
dois processos simultaneamente gravando na
impressora, por exemplo, resulta em uma confusão.
 Todos os SO têm a capacidade de temporariamente
conceder acesso exclusivo a certos recursos para um
processo.
 Para muitos aplicativos, um processo requer acesso
exclusivo não a um, mas a vários recursos. Imagine
uma gráfica que precisa plotar um banner, cujas
informações vêm em um CD.
 Um processo A solicita a leitura do CD; um momento
mais tarde outro processo B solicita a impressão de
uma imagem.
 Agora o processo B solicita a plotadora e a bloqueia,
esperando por ela. O processo B também solicita o CD
e também bloqueia.
 Neste ponto os dois processos estão bloqueados e
assim permaneceram eternamente. Essa situação é
chamada de Deadlock ou impasse.
 Os deadlocks podem ocorrer em outras situações além
dessas de solicitar dispositivos dedicados de E/S.
 Em banco de dados, um programa pode precisar travar
vários registros que ele está utilizando para evitar
condição de corrida.
 Se o processo A trava o registro R1 e o processo B
trava o registro R2, e cada processo tenta travar o
registro do outro também ocorre um deadlock. Em
suma, os deadlocks ocorrem tanto em hardware como
em software.
Recursos
 Um recurso pode ser um dispositivo de hardware ou
um conjunto de informações. Um computador terá
muitos recursos diferentes que podem ser adquiridos.
 Quando várias cópias de um recurso estiverem
disponíveis, qualquer uma delas pode ser utilizada para
satisfazer qualquer solicitação ao recurso.
 Em suma, um recurso é qualquer coisa que pode ser
usada somente por um único processo.
Recursos
 Os recursos dividem-se em dois tipos:
 Recurso Preemptível;
 Recurso não-Preemptível.
Recurso Preemptível
 O primeiro é aquele que pode ser tirado do processo
que é proprietário sem nenhum problema.
 A memória é um exemplo de um recurso preemptível.
No caso da impressora quando B solicitasse o recurso
do CD, teoricamente haveria um impasse. No caso do
recurso preemptível é possível preemptar a memória de
A comutando-a para o disco e comutando B para a
memória. Dessa forma B pode usar u CD. Nenhum
impasse ocorre.
Recurso não preemptivo
 No segundo caso, recurso não-preemptível, é
aquele que não pode ser tirado de seu proprietário
atual sem causar falha na computação.
 Se um processo começou a imprimir, a ação de
tirar dele e dá-la a outro processo resultará em
problemas na saída. As impressoras não são
preemptíveis.
 Em geral, deadlocks envolvem recursos não-
preemptíveis.
A seqüência de eventos requerida para utilizar um
recurso é:
 Solicitar o recurso;

 Utilizar o recurso;

 Liberar o recurso.
 Se o recurso requerido não está disponível, duas
situações podem ocorrer:
 Processo que requisitou o recurso fica bloqueado até
que o recurso seja liberado, ou;
 Processo que requisitou o recurso falha, e depois de
certo tempo tenta novamente requisitar o recurso;
Princípios Básicos de Impasses

 Em deadlock pode ser definido formalmente da


seguinte forma:
 Um conjunto de processos está em situação de
deadlock se todo processo pertencente ao conjunto
estiver esperando por um evento que somente um outro
processo desse mesmo conjunto poderá fazer
acontecer.
 Na maioria dos casos, o evento que cada processo está
esperando é a liberação de algum recurso atualmente
possuído por outro membro do conjunto.
 Em outras palavras, cada membro do conjunto de
processos em impasse está esperando um recurso que é
possuído por um processo em estado de impasse.
 Nenhum processo pode executar, nenhum pode liberar
recurso e nenhum pode ser acordado.
Quatro Condições para Deadlock
 Condição de exclusão mútua
 Um recurso só pode estar alocado para um processo em um
determinado momento;
 Condição de posse e espera (hold and wait)
 Processos que já possuem algum recurso podem solicitar novos
recursos;
 Condição de não preempção
 Recursos já alocados não podem ser retirados do processo que os
alocou;
 Somente o processo que alocou o recurso pode liberá-lo;
 Condição de espera circular
 Deve ser uma cadeia circular de dois ou mais processos;
 Cada um está à espera de recurso retido pelo membro seguinte
dessa cadeia;
Modelagem de Deadlocks
 Geralmente, deadlocks são representados por
grafos a fim de facilitar sua detecção, prevenção e
recuperação – Ocorrência de ciclos pode levar a um
deadlock; Os grafos podem ser modelados
utilizando grafos dirigidos:
Modelagem de Deadlocks

a) recurso R
está alocado
ao processo
A;

b) processo B
está
solicitando/e
sperando
pelo recurso
S;

c) processos C
e D estão
em deadlock
sobre
recursos T e
U;
Estratégias para lidar com impasses

 Ignorar por completo o problema.


 Detectar e recuperar o problema:
 deixar os deadlocks ocorrerem, detectá-los e agir;
 Evitar dinamicamente o problema:
 alocação cuidadosa de recursos;
 Prevenir o problema:
 negação de uma das quatro condições necessárias para
gerar deadlocks;
O Algoritmo do Avestruz
 Esta é a abordagem mais simples: Fingir que não há
nenhum problema.
 Dentro dessa idéia, o UNIX (e o MINIX) apresentam
impasses que nem mesmo são detectados ou por vezes são
automaticamente interrompidos.
 Esta abordagem é simplesmente ignorar o problema na
suposição de que a maioria dos usuários preferiria um
impasse ocasional a uma regra que restringisse todos os
usuários.
 Assim, ignorar o problema é razoável se deadlocks ocorrem
muito raramente e o custo da prevenção é alto. Esta é uma
ponderação entre conveniência e correção.
Detecção e Recuperação
 Quando esta técnica é utilizada, o SO não faz nada
senão monitorar as solicitações e as liberações.
 Exemplo: Processos estão com todos os recursos
alocados;
 Procedimento: permitir que os deadlocks ocorram
tentar detectar as causas e solucionar a situação;
Detecção e Recuperaçã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 (volta ao passado)
 Recuperação por meio de eliminação de processos
Prevenção de Deadlock
 A terceira estratégia é impor restrições
convenientes para os processos de tal modo que os
impasses sejam impossíveis. Se for possível que
pelo menos uma das condições de deadlocks não
ocorra, então os deadlocks não acontecerão.
 No caso da Exclusão Mútua, se nenhum recurso
for atribuído exclusivamente a um único
processo, nunca haverá deadlock.
Prevenção de Deadlock
 O princípio é evitar alocar um recurso quando ele
não for absolutamente necessário e tentar assegurar
que o menor número possível de processos possa
de fato requisitar o recurso. Exemplo: O uso de
spool permitindo que somente um recurso da
impressora seja usado por processo.
Prevenção de Deadlock
 Na segunda condição (condição de posse e
espera), basta requerer que todos os processos
solicitem os seus recursos antes de iniciar a
execução. No entanto, um processo nunca tem que
esperar por aquilo que precisa.
 Um dos problemas é não poder não saber quantos e
quais recursos vão precisar no início da execução e
também reter recursos que outros processos
poderiam estar usando
Prevenção de Deadlock
 A terceira condição (nenhuma preempção) seria
tomar o recurso a força, contudo é uma solução
pouco promissora, de certa forma inviável.
 Por último, a espera circular pode ser eliminado
de várias maneiras, uma delas é ter uma regra que
diz que um processo é intitulado somente para um
único recurso em qualquer momento, ou atribuir
uma ordem para chamada para aquele recurso.
Impedimento do Impasse
 Anteriormente o deadlock não foi evitado pela
imposição de regras arbitrárias aos processos, mas
pela análise cuidadosa de cada solicitação de
recurso para ver se ele poderia ser concedido
seguramente.
Impedimento do Impasse
 Para evitar dinamicamente o deadlock podem-se
adotar algumas soluções:
 Alocação individual de recursos à medida que
processo necessita;
 Escalonamento cuidadoso - impõe um alto custo e
conhecimento prévio dos recursos que serão utilizados;
Impedimento do Impasse
 Algoritmos:
 Banqueiro para um único tipo de recurso;
 Banqueiro para vários tipos de recurso;
 Definição de estados seguros e inseguros.
Impedimento e Impasse
 Neste último, estados seguros não provocam
deadlocks e há uma maneira de atender a todas as
requisições pendentes finalizando normalmente
todos os processos.
 Os estados inseguros podem provocar deadlocks,
mas não necessariamente provocam.
Impedimento e Impasse
 O algoritmo do banqueiro idealizado por Dijkstra
(1965), considera cada requisição no momento em
que ela ocorre, verificando se essa requisição leva a
um estado seguro; Se sim, a requisição é atendida,
se não o atendimento é adiado para outro momento;
Premissas adotadas por um banqueiro para garantir
ou não crédito (recursos) para seus clientes
(processos). Nem todos os clientes (processos)
precisam de toda a linha de credito (recursos)
disponível para eles.
Vantagens e desvantagens do
algoritmo do banqueiro:
 Pouco utilizado, pois é difícil saber quais recursos
serão necessários;
 O número de processos é dinâmico e pode variar
constantemente, tornando o algoritmo custoso;
 Na teoria o algoritmo é ótimo.
Questionário
 O que é deadlock, e quais as suas possíveis causas?
 O que é recurso e como podemos categorizar?
 Quais as 4 condições para o deadlock?
 Descreva as estratégias para lidar com impasses

Você também pode gostar