Sei sulla pagina 1di 8

Sistemas Operacionais: Deadlock

Darlan Dieterich darlandieterich@gmail.com Dennis Haubert Ponssoni dhponssoni@hotmail.com UFSM Universidade Federal de Santa Maria Campus de Frederico westphalen, RS, Brasil

Resumo
O artigo abordar sobre deadlocks, e suas definies, incluindo suas quatro condies para ocorrncia de um Deadlock, entre elas esto (condio mtua, condio de posse e espera, condio de no-preempo e condio de espera circular). Incluindo mtodos de deteco, recuperao, preveno, evitao de deadlock em um sistema computacional, de forma simplificada.

novamente at que o outro o tenha feito. Os problemas de deadlocks tendem a se tornar mais comuns tendo em vista as perspectivas atuais que incluem maior nmero de processos, programas com multithreads, muito mais recursos dentro de um sistema e a nfase em arquivos de longa permanncia e em servidores de banco de dados em lugar dos sistemas batch (Silberschatz[1]).

1 Introduo
Em um ambiente de multiprogramao, diversos processos podem competir por um numero finito de recursos. Um processo solicita recurso; caso os recursos no estejam disponveis no momento, o processo entra em estado porque os recursos que eles solicitam esto ocupados por outros processos em espera. Esta situao denominada de deadlock. Talvez a melhor ilustrao de um deadlock possa ser delineada a partir de uma lei pertencente legislatura do estado do Kansas no inicio do sculo XX. Ela dizia, em parte: Quando dois trens se aproximarem um do outro em um cruzamento, ambos devero parar completamente e nenhum deles partir

Figura 1 - Ilustrao de um exemplo de Deadlock.

2 Deadlock
Deadlock (inter-bloqueio, blocagem, impasse), no contexto dos sistemas operacionais (SO), caracteriza uma situao em que ocorre um impasse e dois ou mais processos ficam impedidos de

continuar suas execues, ou seja, ficam bloqueados. (Wikipdia[3]) O Deadlock acontece quando dois (ou mais) processos que esto espera de uma deciso do outro, esperando uma liberao de um recurso (que seriam como exemplo, dispositivos de entrada e sada, espao de memria, ciclos de CPU), nitidamente causando uma pane no sistema, muita lentido, e s vezes travamento do sistema. Para entender tecnicamente, um conjunto de processos em estado de deadlock quando cada processo do conjunto esta esperando por um evento que s pode ser provocado por outro processo do mesmo conjunto. Um exemplo comum seria o processo A aguardando a liberao de um recurso ocupado pelo processo B que s o vai liberar quando outro recurso ocupado por A for liberado. Em modo normal de operao, a utilizao de um recurso por um processo deve obedecer a seguinte seqncia: 1-Solicita- Se a solicitao no puder ser atendida imediatamente (exemplo: o recurso esta sendo utilizado por outro processo), o processo solicitante dever aguardar at que possa adquirir o recurso. 2-Usa- O processo pode operar sobre o recurso (exemplo: se o recurso for uma impressora, o processo pode imprimir utilizando-a). 3-Libera- O processo libera o recurso. para Existem quatro condies necessrias ocorrncia de um deadlock: I. II. III. IV. Excluso mtua Posse e espera No preempo Espera circular

3- Caractersticas
Em um deadlock, os processos nunca terminam sua execuo e os recursos do sistema ficam bloqueados, impedindo outros Jobs de entrar em execuo. Abaixo descrevemos aspectos que caracterizam os deadlocks. 3.1 Condies Necessrias O deadlock pode acontecer, se as quatro situaes de Coffman ocorrerem ao mesmo tempo em um sistema: 1. Excluso mtua: Pelo menos um processo deve ser alocado em modalidade no - compartilhvel; ou seja, somente um processo de cada vez poder utilizar este recurso. Se outro processo solicitar o recurso, ele dever ser atrasado at que o recurso possa ser liberado. 2. Posse e espera: Um processo deve estar de posse de pelo menos um recurso e aguardando para adquirir recursos adicionais que no momento esto a servio de outros processos. 3. No preempo: os recursos no podem ser objeto de preempo; isto , um recurso s pode ser liberado pelo processo que o estiver retendo, de forma voluntria, aps completar sua tarefa. 4. Espera circular: conjunto circular de dois ou mais processos. Cada conjunto esta aguardando um recurso aprisionado pelo membro seguinte dessa cadeia.

4-Manipulao
Segundo (Silberschatz[1]), basicamente podemos lidar com problema de deadlock de uma de trs maneiras:

Podemos usar um protocolo para prevenir ou evitar deadlocks, garantindo que os sistemas jamais entraro em estado de deadlock. Podemos permitir ao sistema entrar em estado de deadlock, detectandoo e recuperando o sistema. Podemos ignorar completamente o problema e fingir que nunca ocorrero deadlocks no sistema. Esta soluo utilizada pela maioria dos sistemas operacionais, inclusive UNIX. Figura 2 Ilustrao de deadlock de trfego. 4.2-Deadlock na alocao de recursos simples Muitos deadlocks acontecem em sistemas de computao porque os recursos somente podem ser usados por um usurio por vez (recursos dedicados). Suponha que em um sistema o processo A detm um recurso 1, e preciso alocar o recurso 2 para poder prosseguir. O processo B, por sua vez, detm o recurso 2, e precisa do recurso 1 para poder prosseguir. Nesta situao, temos um deadlock, porque um processo esta esperando pelo outro. Esta situao de espera mtua chamada muitas vezes de espera circular. (Bruno [5]). 4.3-Deadlocks em sistemas de spooling Em um sistema de disco, cartes so diretamente lidos da leitora de cartes para o disco. Quando um job executado, o sistema operacional satisfaz seus pedidos por entrada da leitora de cartes pela leitura do disco. Da mesma forma, quando um job pede a impresso de uma linha para a impressora, esta copiada em um buffer do sistema que escrito para o disco. Quando a impressora fica disponvel, a sada realmente impressa.

Segundo (Deitel[4]) os Deadlcks podem se desenvolver de muitas maneiras. Se a tarefa designada a um processo esperar que um evento ocorra e o sistema no tiver nenhuma proviso para sinalizar esse evento, teremos um deadlock de um s processo. Esses deadlocks so extremamente difceis de detectar. Deadlocks em sistemas reais freqentemente envolvem vrios processos que esto competindo por vrios recursos de diversos tipos. Abaixo alguns exemplos comuns: 4.1-Deadlock de trfego Como vemos em algumas cidades no nosso quotidiano, com grande fluxo de veculos (processos) circulando em avenidas (recursos) que se cruzam, chegando a uma situao que o trfego fica completamente paralisado (deadlock). Nessa questo onde somente a polcia (algoritmos de recuperao) vai resolver essa situao, fazendo com que os carros recuem da rea congestionada. Casualmente o trfego volta ao estado normal, mas com motoristas com grande estado de aborrecimento e perda de tempo.

Esta forma de processamento chamada de spooling (spool = Simultaneous Peripheral Operation On-Line). Spooling utiliza um disco como um buffer muito grande para ler tanto quanto possa dos dispositivos de entrada e para armazenar arquivos de sada at que os dispositivos de sada estejam aptos para receb-los. A diferena entre buferizao e spooling que enquanto a buferizao sobrepe o processamento de um job com seu prprio E/S, o spooling sobrepe o E/S de um job com o processamento de outros jobs. Assim, a tcnica spooling mais vantajosa do que a buferizao. O nico efeito colateral a necessidade de algum espao em disco para o spool, alm de algumas tabelas em memria. (Incc.br [6]) Sistema de spooling serve como exemplo, agilizar as tarefas de impresso do sistema. Ao contrrio do aplicativo mandar linhas para impresso diretamente para a impressora, ele as manda para o spool, que se encarregar de envi-las para a impressora. Ento o aplicativo rapidamente desalojado da tarefa de imprimir. Vrios jobs de impresso podem ser enfileirados e sero gerenciados pela tcnica de spooling.

proprietrio atual para d-lo a outro processo. Muitas vezes uma interveno manual pode ser necessria, especialmente em sistemas operacionais de processamento em lote (batch) executados em computadores de grande porte. Por exemplo, para retomar uma impressora a laser de seu processoproprietrio atual, o operador pode juntar todos os formulrios j impressos e coloclos em uma pilha. Em seguida, o processo pode ser suspenso (marcado como no executvel). Nesse ponto a impressora pode ser liberada para outro processo. Quando esse segundo processo terminar, aquela pilha de formulrios j impressos pode ser devolvida bandeja de sada da impressora, e outro processo anterior reiniciado. 5.2 Recuperao por meio de estado

5. Recuperao de deadlock
Suponha que um algoritmo de deteco de deadlocks tenha sido bem-sucedido, localizando um deadlock, necessrio recuperar o sistema dessa situao e coloc-lo novamente em condies normais de execuo. 5.1 Recuperao preempo por meio de

Se projetistas de sistemas operacionais de mquinas souberem da possibilidade de ocorrncia de deadlocks, provavelmente podero fazer com que os processos sejam periodicamente verificados (checkpointed). Verificar um processo, nesse caso, significa ter seu estado guardado em um arquivo-imagem (checkpoint file), de modo que ele possa ser reiniciado posteriormente. Esse arquivo-imagem contm no somente a imagem da memria, mas tambm o estado dos recursos passveis, isto , quais recursos esto em um determinado instante alocados ao processo. Para maior eficincia, cada nova imagem deve ser escrita em um novo arquivo, no escrita sobre o arquivo anterior, de modo que, ao ser executado, um processo acumule uma seqncia completa de arquivos-imagem.

Em alguns casos pode ser possvel retomar provisoriamente um recurso de seu

5.3 Recuperao por eliminao de processos.

meio

de

3. O processo C nada possui, mas requisita o recurso S. 4. O processo D possui o recurso U, mas requisita o recuso S. 5. O processo E possui o recurso T, e requisita o recurso V. 6. O processo F possui o recurso W, e requisita o recurso S. 7. O processo G possui o recurso V e requisita o recurso U.

A maneira mais grosseira de eliminar um deadlock, mas tambm a mais simples matando um ou mais processos. Uma possibilidade matar um processo presente no ciclo. Com um pouco de sorte, os demais processos sero capazes de prosseguir. Se no for suficiente, essa ao poder ser repetida at o ciclo ser quebrado. (Tanembaum[2])

6. Detectando um Deadlock
Se um sistema no empregar um algoritmo de preveno ou de impedimento de deadlocks, poder ocorrer uma situao de deadlock. Neste caso o sistema dever ceder: Um algoritmo que examine o estado do sistema para determinar a ocorrncia de deadlock. Um algoritmo para recuperar o sistema de deadlock.

6.2 Deteco de deadlocks com mltiplos recursos de cada tipo. Quando existem vrias cpias de algum recurso, necessrio um mtodo diferente para detectar deadlocks. Para a deteco de deadlocks entre n processos, de P1 a Pn. Seja m o nmero de classes de recursos, com E1 recursos de classe 1, E2 recursos de classe 2 e, generalizando, Ej recursos de classe i( 1 i m). E o vetor de recursos existentes; ele fornece o nmero total de instncias de cada recurso existente. Por exemplo, se a classe 1 for de unidades de fita, ento E1 = 2 significar que o sistema tem duas unidades de fita. O algoritmo de deteco de deadlock baseia-se na comprao de vetores. Vamos definir a relao A B se aplica se e somente se Aj Bj para 1 i m. Inicialmente, todos os processos esto desmarcados. medida que o algoritmo prossegue sua execuo, os processos so marcados, indicando que eles esto aptos a completar seus processamentos sem sofrerem deadlocks. (Tanembaum[2])

6.1 Deteco de deadlocks com um recurso de cada tipo Quando existe somente um recurso de cada tipo. Esse sistema pode ter um scanner, uma unidade de CD, um plotter e uma unidade de fita, mas no mais do que um recurso de cada classe. Em outras palavras, est-se excluindo por enquanto os sistemas com duas impressoras. Para esse sistema pode-se construir um grafo de recursos ilustrado na figura 3. 1. O processo A possu o recurso R e requisita o recurso S. 2. O processo B nada possui, mas requisita o recurso T.

solicitar primeiro a impressora e depois o drive de fita. Conhecendo a seqncia completa de solicitaes e liberaes para cada processo, podemos decidir, para cada solicitao, se o processo dever ou no aguardar. Cada solicitao requer que o sistema considere os recursos disponveis no momento, os recursos alocados no momento a cada processo, de modo a decidir se a solicitao em curso poder ser satisfeita feita ou dever esperar, no sentido de evitar um possvel deadlock futuro.

. Preveno de Deadlocks 8.
Para prevenir um deadlock precisaprecisa se usar as quatro condies de Coffman, para ver se elas podem dar alguma pista, se for garantido que pelo menos uma das condies no seja satisfeita ento os deadlocks sero impossveis. 8.1 .1 Atacando a condio mtua. Neste caso usa-se usa a tcnica spooling, vrios processos podero gerar suas sadas ao mesmo tempo, todavia o nico processo que realmente requisita a impressora fsica o daemon de impresso. Como o daemon nunca requisita qualquer outro recurso, no haver deadlock envolvendo a impressora. Se um processo alocar um recurso particular, tem uso exclusivo do mesmo enquanto este estiver alocado a si. 8.2 .2 Atacando a condio de posse-eposse espera. Um meio de realizar esse objetivo exigir que todos os processos requisitem todos os seus recursos antes de iniciarem suas respectivas execues. Se tudo estiver disponvel, o processo ter alocado para si

Figura 3 - (a) Um grafo de recursos (b) um ciclo extrado de (a).

7. Evitando Deadlocks
Presume-se se tacitamente que, quando um processo requisita recursos, ele os requisita todos de uma s vez. No entanto, na maioria dos sistemas operacionais os recursos ursos so requisitados requisi um de cada a vez. O sistema deve ser capaz de decidir se liberar um recurso seguro ou no e somente fazer alocao quando qua ela for segura. (Tanembaum[2]). (Tanembaum[2]) De acordo com Silberschatz[1] um u mtodo alternativo para evitar Deadlock requerer informao adicional sobre como os recursos devero ser solicitados. Por exemplo, em um sistema com um drive de fita e uma impressora devem ser informados de que o processo P ir solicitar primeiro o drive de fita e depois a impressora, antes de e liberar ambos os recursos. O processo Q, por outro lado, ir

o que precisar e poder ento ser executado at o fim. Um processo pode assegurar um recurso ao mesmo tempo em que o mesmo est pedido por outro processo.

tenha permisso de possuir somente um recurso de cada vez. Se ele necessitar de um segundo recurso, dever liberar o primeiro. Para um processo que necessita copiar um arquivo grande de uma fita para uma impressora. Outra maneira de evitar a condio de espera circular fornecer uma numerao global de todos os recursos, a regra a seguinte: processos podem requisitar recursos sempre que necessrio, mas todas as solicitaes devem ser feitas em ordem numrica. (Tanembaum[2])

Figura 4 Atacando condio posse-e-espera.

8.3 Atacando preempo.

condio

de

no

Se um processo tiver a posse de uma impressora e estiver no meio da impresso de seus resultados, o ato de retomar-lhe forar a impressora porque um plotter de que esse processo tambm necessita no est disponvel, complicado na melhor das hipteses e impossvel na pior delas.

Situao que pode surgir quando um processo P1 requer o recurso R1 a medida que o primeiro solicitado pelo recurso R2, e o processo P2 requer R2 e ao mesmo tempo solicitado pelo recurso R1. Pode haver mais do que dois processo envolverem na espera circular.

Figura 6 Condio de espera circular.

9-Concluso
Figura 5 Sem preempo. Deadlock uma falha e no um erro. Deadlock ocorre quando dois ou mais processos esto espera de liberao do mesmo recurso que iro usar. Como vimos nesse estudo, mesmo com a ocorrncia de um deadlock, possvel utilizar meios de manipulao para recuperar os problemas

8.4 Atacando a condio de espera circular. Um meio simples de eliminar ter uma regra que determine que um processo

ocorridos com os processos, utilizando diversos tipos de algoritmos avanados. Pudemos entender um pouco mais sobre como ocorre um conflito de processos em um sistema computacional, tambm utilizando tcnicos mecanismos para evitar um deadlock. Deadlock um problema potencial em qualquer sistema operacional. Uma das estratgias mais simples de tratar deadlock seria ignor-lo.

10-Referncias
[1] Abraham Silberschatz, Peter Baer Galvin, Greg Gagne Fundamentos de Sistemas Operacionais LTC, GEN, 2004. [2] Andrews S. Tanenbaum, Sistemas Operacionais Modernos - 2 Edio. ABDR, 2001. [3] Wikipdia - Deadlocks - Enciclopdia Livre, 2011. Disponvel em: <http://pt.wikipedia.org/wiki/Deadlock> [4] Harvey.M. Deitel, Paul.J. Deitel, David.R. Choffness Sistemas Operacionais 3 edio Editora Pearson, 2005. [5] Prof. Bruno Apostila de Sistemas Operacionais. Disponvel em: <http://pt.scribd.com/doc/50169406/Aposti la-SO1> [6] Rodrigo L. - Incc.br - Apostila Sistemas Operacionais Disponvel em: <http://lrodrigo.lncc.br/images/7/7b/Aposti la-nova.pdf >

Potrebbero piacerti anche