Você está na página 1de 4

Relembrando

Sistemas Operacionais Cincia da Computao

Deadlocks (impasses)

Estratgias para tratar Deadlocks


1. 2. 3. 4. Ignorar por completo o problema Deteco e recuperao Anulao dinmica
alocao cuidadosa de recursos negao de uma das quatro condies necessrias

Algoritmos para eliminar Deadlocks Parte 2


Prof. Humberto Brando humberto@dcc.ufmg.br aula disponvel no site: http://www.dcc.ufmg.br/~humberto/unifal/
Universidade Federal de Alfenas Departamento de Cincias Exatas verso da aula: 0.1

Preveno

Preveno de Deadlocks Condies de ocorrncia de Deadlocks Mtodo: Preveno de Deadlocks


Existem 4 condies que devem estar presentes para que um deadlock ocorra ocorra:
Condio de excluso mtua: em cada instante, cada recurso est: (i) sendo utilizado por um nico processo, ou (ii) est disponvel; Condio de posse e espera: processos que, em um determinado instante, retm recursos concedidos anteriormente e podem requisitar novos recursos

Condies de ocorrncia de Deadlocks


Existem 4 condies que devem estar presentes para que um deadlock ocorra:
Condio de No preempo: recursos sendo utilizados no podem ser tomados para utilizao em outro processo; Condio de espera circular: Deve existir um encadeamento circular de dois ou mais processos. Cada um deles encontra-se a espera de um recursos que est sendo utilizado por outro membro desta cadeia.

Atacando a Condio de Excluso Mtua


Condio de excluso mtua: em cada instante, cada recurso est: (i) sendo utilizado por um nico processo, ou (ii) est disponvel;

Se nunca acontecer de um recurso ser alocado exclusivamente a um nico processo, nunca teremos deadlock.

Atacando a Condio de Excluso Mtua


Obviamente, que para alguns recursos a quebra desta condio levaria a falhas . Exemplo:
Utilizao de um enlace na rede por dois processos ao mesmo tempo (no to critico pela presena de algoritmos de controle de erro nos protocolos); Utilizao de uma impressora por 3 editores de texto ao mesmo tempo;

Atacando a Condio de Excluso Mtua


Exemplo:
Utilizao de uma impressora por 3 editores de texto ao mesmo tempo; R Repare que, na prtica, vrios editores solicitam ti i dit li it impresso, mas as requisies so gerenciadas pelo daemon de impresso, atravs da tcnica de spooling. O spooler de impresso quem garante o acesso correto a impressora.

Atacando a Condio de Posse-e-Espera


Condio de posse-e-espera: processos que, em um posse- espera: determinado instante, retm recursos concedidos anteriormente e podem requisitar novos recursos

Atacando a Condio de Posse-e-Espera


Veja o caso:
Suponha que os filsofos (do problema do Jantar dos Filsofos) pegam os garfos do lado esquerdo, e no soltam at comer comer. Se todos pegarem o garfo do lado esquerdo, todos os filsofos iro dormir ao tentar pegar os garfos do lado direito, porque todos os garfos esto ocupados...

Se pudermos impedir que processos que j mantm recursos esperem por mais recursos, seremos capazes de eliminar os deadlocks.

Atacando a Condio de Posse-e-Espera


Uma soluo seria o processo pegar todos os recursos que vai precisar de uma s vez. Suponha um thread que manipula uma regio de memria, imprime um documento na impressora, e aps a impresso ele deve alterar novamente o endereo de memria. Com a soluo proposta, a regio crtica da memria ficaria travada at todo o processo terminar, no podendo ser alterada por outra thread.

Atacando a Condio de Posse-e-Espera


Desvantagens: Este mtodo exige do programador o conhecimento de todos os recursos que precisam ser utilizados antes da execuo do processo/thread; No utiliza os recursos de forma otimizada;

Vantagem:
Evita os deadlocks.

Atacando a Condio de No-Preempo


Condio de posse-e-espera: recursos sendo utilizados posse- espera: no podem ser tomados para utilizao em outro processo;

Atacando a Condio de No-Preempo


Parecido com a primeira estratgia (atacando a excluso mtua) . Mas aqui considerado que o recurso tomado a fora. E o processo que tinha a posse do recurso, termina sua utilizao. d t i tili Na primeira estratgia considerado que o recurso utilizado ao mesmo tempo por vrios processos.

Se um processo tomar a fora um recurso de outro processo que tinha posse do mesmo, evitamos os deadlocks. Ou seja, nenhum processo precisa aguardar a liberao de recursos;

Atacando a Condio de No-Preempo


Vantagem:
Acaba com deadlock;

Atacando a Condio de Espera Circular


Condio de espera circular: Deve existir um circular: encadeamento circular de dois ou mais processos. Cada um deles encontra-se a espera de um recursos que est sendo utilizado por outro membro desta cadeia.

Desvantagem:
Seu processo no tem garantia na utilizao dos recursos. A qualquer instante o recurso pode lhe ser tomado;

Este o conceito do ciclo no grafo; Se no existir ciclo, no existe deadlock;

Atacando a Condio de Espera Circular


Forma simples de atacar a espera circular: q p p Se existir a restrio de que um processo pode apenas ter a posse de um recurso, a cada instante de tempo, este grafo nunca possuir ciclos;

Atacando a Condio de Espera Circular


Imagine que um processo precisa copiar um arquivo (que no cabe inteiro na memria), de um disco para um impressora; Ele pode bloquear o disco, copiar o mximo que a memria suporta. Liberar o disco, bloquear a impressora, imprimir esta parte, e repetir este processo o nmeros de vezes que for necessrio, at imprimir todo o arquivo; Quais so os problemas desta abordagem?

Atacando a Condio de Espera Circular


Ao liberar o disco, outro processo pode sobrescrever este arquivo, por exemplo; Ao liberar a impressora, outro processo pode destruir sua impresso;

Atacando a Condio de Espera Circular


Vantagem:
Acaba com os deadlocks;

Desvantagem:
Em algumas aplicaes tal estratgia pode causar falhas irreparveis.

Referencia
Sistemas Operacionais Modernos. Tanenbaum, A. S. 2 edio. 2003

Você também pode gostar