Vous êtes sur la page 1sur 41

Sistemas Operacionais

Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br
Impasses (Deadlock)

n Recursos;

n Introduo aos impasses;

n Algoritmo do avestruz;

n Deteco e recuperao de deadlocks;

n Evitando impasses;

n Preveno de impasses;
Deadlocks

n Um impasse pode ser definido formalmente como:

q Um conjunto de processos estar em situao de impasse se


todo processo pertencente ao conjunto estiver esperando por
um evento que somente outro processo desse mesmo
conjunto poder fazer acontecer;
Deadlocks

n Em alguns casos pode ocorrer a seguinte situao:

q Um processo solicita um determinado recurso e este no


est disponvel no momento;

n Quando isso acontece o processo entra para o estado de


espera (bloqueado);

n Em algumas situaes possvel que estes processos


nunca mais mudem de estado, pois os recursos que eles
necessitam podem estar sendo mantidos por outros
processos em espera;
Deadlocks

n Por exemplo, que dois processos queiram cada um gravar


em CD um documento obtido de um scanner:

q O processo A solicita permisso para usar o scanner e


autorizado;
q O processo B, que programado diferentemente, solicita
primeiro permisso para usar o gravador de CD e tambm
autorizado;
q Ento, o processo A pede para usar o gravador de CD, mas
a solicitao lhe negada at que o processo B o libere;
q Infelizmente, em vez de liberar o gravador de CD, o processo
B pede para usar o scanner;
q Nesse ponto, ambos os processos ficam bloquados e assim
permanecero para sempre;
q Essa situao denominada deadlock;
Deadlocks

n A ideia de impasse pode ser mais facilmente entendida se


fizermos uma analogia com uma escada de um prdio
utilizada para casos de incndio;

n Apesar de ter sido construda como uma opo de fuga em


caso de incndio, as pessoas que trabalham no prdio
muitas vezes preferem utilizar a escada ao invs dos
elevadores;

n No entanto, h espao apenas para uma pessoa em cada


degrau. Logo, o trfego pela escada vai bem at que 2
pessoas se cruzam;
Deadlocks

n Por outro lado, existe uma plataforma em cada um dos


andares que suporta vrias pessoas;

n Os problemas acontecem no momento em que uma pessoa


que est subindo a escada encontra outra que est
descendo e ambas se recusam a retroceder at a plataforma;
Deadlocks

n Exemplo para atravessar uma ponte:

q Trfego somente em uma direo;


q Cada seo da ponte pode ser vista como um recurso;
q Se ocorre deadlock, pode ser resolvido se um carro voltar
(preempo de recursos e rollback);
q Diversos carros podem ter que voltar se ocorre deadlock;
q Pode causar starvation (quando um processo nunca
executado morre de fome - , pois processos de prioridade
maior sempre o impedem de ser executado);
Deadlocks Recursos

n qualquer objeto ao qual deva ser dado acesso exclusivo


para cada processo;

n Recursos podem ser dispositivos de hardware ou software;

n Para a utilizao de um recurso, o processo deve realizar a


seguinte sequncia:

q Requisitar o recurso;
q Utilizar o recurso;
q Liberar o recurso;
Deadlocks Recursos

n Se um recurso no estiver disponvel quando for


requisitado, o processo que o requisitou forado a
aguardar, sendo dois mtodos utilizados:

q 1) o processo bloqueado e acordado quando o recurso


estiver disponvel;

q 2) enviado um cdigo de erro ao processo indicando que a


requisio falhou sendo, ento, que o prprio processo deve
decidir a ao a tomar (ex: aguardar algum tempo e pedir
novamente);
Deadlocks Recursos preemptveis e no preemptveis

n Preemptvel aquele que pode ser retirado do processo


proprietrio sem nenhum prejuzo;

n Recurso No Preemptvel aquele que no pode ser retirado


do atual processo proprietrio sem que a computao
apresente falha;

n Se um processo comeou a gravar um CD, retirar dele


repentinamente o gravador de CD e dar a um outro processo
resultar em um CD com erros;

n Gravadores de CD so recursos que no podem ser


tomados a qualquer momento, isto , no so preemptveis;
Deadlocks Introduo aos impasses

n Condies para ocorrncia de impasses de recursos:

1. Condio de excluso mtua;

2. Condio de posse e espera;

3. Condio de no preempo;

4. Condio de espera circular;


Deadlocks Introduo aos impasses

n Condies necessrias:

q 1) Condio de excluso mtua;

a) Apenas um processo por vez pode usar o recurso;

q 2) Condio de posse e espera;

a) Processos que, em determinado instante, retm recurso


concedido anteriormente podem requisitar novos
recursos;
Deadlocks Introduo aos impasses

n Condies necessrias:

q 3) Condio de no preempo;

a) Os recursos s podem ser liberados voluntariamente


pelo processo que o mantm;

q 4) Condio de espera circular;

a) Dado um conjunto de processos {P1, P2, ..., Pn} em


espera, P1 est esperando por um recurso mantido por
P2;

b) P2 est esperando um recurso mantido por P3 e assim


sucessivamente, at que Pn esteja esperando por um
recurso alocado por P1;
Deadlocks Introduo aos impasses

n Modelagem de impasses:

1. Ignorar o problema (Algoritmo do avestruz);

2. Deteco e recuperao. Deixe os impasses ocorrerem,


detecte e recupere;

3. Anulao dinmica por meio de alocao cuidadosa de


recursos;

4. Preveno, negando estruturalmente uma das quatro


condies necessrias;
Deadlocks Introduo aos impasses

n Algoritmo do Avestruz:

q Enterre a cabea na areia e finja que o problema no


existe;

q Engenheiros acham isto razovel se:

v Deadlocks ocorrem muito raramente;


v Custo da preveno alto;

q UNIX e Windows seguem esta abordagem;


Deadlocks Introduo aos impasses
Deadlocks Introduo aos impasses
Deadlocks Introduo aos impasses
Deadlocks Introduo aos impasses
Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com um recurso de cada tipo:


Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com um recurso de cada tipo:

q Algoritmo para deteco de impasse:

v 1) Para cada n, N no grafo, realize os cinco passos


seguintes, usando N como n inicial;

v 2) Inicialize L para uma lista vazia e assinale todos os


arcos como demarcados;

v 3) Insira o n atual no final de L, verifique se o n


aparece em L duas vezes. Se sim, o grafo contm um
ciclo (listado em L) e o algoritmo termina;
Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com um recurso de cada tipo:

q Algoritmo para deteco de impasse:

v 4) A partir do n dado, verifique se existe algum arco de


sada desmarcado. Em caso afirmativo, v para o passo
5; do contrrio, v para o passo 6;

v 5) Escolha aleatoriamente um arco de sada


desmarcado e marque-o. ento, siga esse arco para
obter o novo n atual e v para o passo 3;

v 6) Se esse n for o inicial, o grafo no conter ciclo


algum e o algoritmo terminar. Seno, o final foi
alcanado. Remova-o e volte para o n anterior isto ,
aquele que era atual antes desse marque-o como
atual e v para o passo 3;
Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com mltiplos recursos de cada tipo:


Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com mltiplos recursos de cada tipo:

q Algoritmo para deteco de impasse:

v 1) Procure um processo desmarcado, Pi, para o qual a i-


sima linha de R seja menor ou igual correspondente
de A;

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

v 3) Se no existir esse processo, o algoritmo terminar;


Deadlocks Deteco e recuperao de impasses

n Deteco de impasses com mltiplos recursos de cada tipo:


Deadlocks Deteco e recuperao de impasses

n Recuperao de situaes de impasse:

q Recuperao por preempo;

q Recuperao por retrocesso;

q Recuperao por eliminao de processos;


Deadlocks Evitando impasses

n Trajetria de recursos:
Deadlocks Evitando impasses

n Estados seguros e inseguros:


Deadlocks Evitando impasses

n Estados seguros e inseguros:


Deadlocks Evitando impasses

n O algoritmo do banqueiro para um nico recurso:


Deadlocks Evitando impasses

n O algoritmo do banqueiro com mltiplos recursos:


Deadlocks Evitando impasses

n O algoritmo do banqueiro com mltiplos recursos:

q O algoritmo que verifica se um estado seguro


descrito a seguir:

1. Procure uma linha R, cujas necessidades de recursos sejam


<= A. Se no existir tal linha o sistema acabar por entrar em
impasse, j que nenhum processo poder ser executado por
completo;

2. Considere que o processo da linha escolhida requer todos os


recursos que necessita e termina. Marque o processo como
terminado, acrescente todos os seus recursos ao vetor A;

3. Repita os passos 1 e 2 at que todos os processos estejam


marcados como terminados (estado seguro) ou at que no
haja processo cujo recurso precise ser encontrado (h um
impasse);
Deadlocks Preveno de impasses

n Atacando a condio de excluso mtua;

n Atacando a condio de posse e espera;

n Atacando a condio de preempo;

n Atacando a condio de espera circular;


Deadlocks Preveno de impasses

n Atacando a condio de excluso mtua;

n Soluo:

q Sem excluso mtua, no existem deadlocks;

q Porqu?
v Quando possvel de ser realizada, a eliminao das
condies de excluso mtua resolve os problemas de
deadlock;

q Problemas:
v Risco de inconsistncia no compartilhamento de
recursos;
Deadlocks Preveno de impasses

n Atacando a condio de posse e espera;

n Soluo:

q Alocao de todos os recursos necessrios antes do


inicio dos processos;

q Problemas:
v Desperdcio dos recursos do sistema;
v Impossibilidade de alocao dinmica de recursos;
v Risco de starvation;

q Muitos processos s sabem quanto recursos vo


precisar somente aps sua execuo;
Deadlocks Preveno de impasses

n Atacando a condio de no-preempo;

n Soluo:

q Retirada do recurso de um processo quando for


requisitado por outro processo;

q Problemas:
v Pode fazer o processo perder totalmente o
processamento realizado;
v Risco de starvation;
Deadlocks Preveno de impasses

n Atacando a condio de espera circular;

n Soluo:

q Limitao da posse de um recurso por vez;

q Se um processo necessitar de outro recurso, deve


liberar qualquer recurso j alocado;

q Fornecer uma numerao global de todos os recursos;

q Problemas:
v Restrio no grau de compartilhamento e processamento
dos processos;
Deadlocks Preveno de impasses

n Atacando a condio de espera circular;


Deadlocks Preveno de impasses

n Abordagens contra impasses:


Obrigado!

Sistemas Operacionais
Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br