Você está na página 1de 7

Deadlock

Praa, E. A.
elaineap@gmail.com

Sabo, P. H.
phsabo@gmail.com

Universidade Estadual de Maring (DIN-UEM) Avevida Colombo, 5790 Bloco C56 87020-900 Maring PR BRASIL +554430114345

RESUMO
Um processo dito em deadlock quando est esperando por um evento que nunca ocorrer. Essa situao conseqncia do compartilhamento de recursos do sistema entre vrios processos, sendo que cada processo deve ter acesso ao recurso de forma exclusiva (excluso mtua). O problema de deadlock existe em qualquer sistema multiprogramvel; no entanto, as solues implementadas devem considerar o tipo do sistema e o impacto em seu desempenho. Para ocorrer um deadlock necessrio que ocorra: Excluso Mtua, Evitar que os processos que j possuam recursos garantidos requisitem novos recursos, tambm evitaremos o problema do deadlock, Permitir que um recurso seja retirado de um processo quando outro processo necessitar do mesmo recurso, Forar o processo a ter apenas um recurso de cada vez. Os sistemas operacionais para detectar deadlocks, devem manter estruturas de dados capazes de identificar cada recurso do sistema, o processo que o est alocando e os processos que esto na espera da liberao do recurso. Toda vez que um recurso alocado ou liberado por um processo, a estrutura deve ser atualizada. Dependendo do tipo de sistema, o ciclo de busca por um deadlock varia. Em sistemas com time sharing, o tempo de busca pode ser maior, sem comprometer o desempenho e a confiabilidade do sistema. J em sistemas de tempo real devem constantemente certificarse da ocorrncia de deadlocks, porm essa maior segurana gera mais processamento no sistema. Uma soluo bastante utilizada na maioria dos SOs eliminar os processos envolvidos no deadlock e desalocar os recursos j garantidos por eles, quebrando assim a espera circular. Deadlocks no um problema especfico de sistemas operacionais, aqui mostramos a ocorrncia deles em redes intra chip e uma possvel soluo.

problem of deadlock, allow an action to be taken from one process when another process needs the same resource, Force the process to have only one resource at a time. Operating systems to detect deadlocks must maintain data structures able to identify each system resource, the process that is allocating and processes that are waiting to release the resource. Whenever a resource is allocated or released by a process, the structure must be updated. Depending on the type of system, the cycle of searching for a deadlock varies. In systems with time sharing, the search time can be increased without compromising performance and reliability. Back in real-time systems must constantly check the occurrence of deadlocks, but this increased security creates more processing in the system. One solution often used in most OSs is to eliminate the processes involved in the deadlock and deallocate the resources already secured for them, thus breaking the circular wait. Deadlock is not a problem specific to operating systems, here we show the occurrence of them in intra-chip networks and a possible solution.

Keywords
Deadlocks, Operating Systems, Network on Chip.

1.

INTRODUO

Deadlock so situaes indesejveis, onde os processos nunca terminam sua execuo e os recursos do sistema ficam comprometidos, impedindo que outros jobs iniciam. Ele uma falha e no um erro do Sistema Operacional e ocorre quando mais de um processo requer um determinado recurso ao mesmo tempo. O deadlock cria uma situao em que um ou mais processos nunca correro para concluso sem recuperao. Para Dijkstra (1968) deadlock definido como: "Efeito colateral de estratgias de sincronizao, porque dois processos ao atualizar duas variveis compartilhadas, usam uma lock flag, um para requisitar valores de uma varivel, o outro para atualizar valor da varivel". Embora deadlocks possam ocorrer em diversos pontos de um sistema operacional, eles so um dos principais problemas dos programas concorrentes. Situaes semelhantes ocorrem periodicamente num conjunto de processos que esto a compartilhar recursos. Memria, os drives de uma impressora, um drive de disquetes so todos

Palavras-chave
Deadlock, Sistemas Operacionais, Redes Intra Chip.

ABSTRACT
A process is a deadlock when waiting for an event that never occurs. This situation is a result of sharing system resources among multiple processes, each process must have access to feature an exclusive (mutex). The problem of deadlock exists in any multiprogram system, however, the solutions implemented should consider the type of system and impact on their performance. To experience a deadlock needs to take place: Mutual Exclusion, Prevent the processes that have already secured funding to order new resources, you will avoid the

exemplos de recursos. Um processo pode bloquear quando pedido qualquer um desses recursos e os mesmos j esto ocupados, assim qualquer um pode contribuir para entrar na situao deadlock. E no ocorrem apenas em sistemas operacionais, redes intra chip, tambm apresentam este problema, levando o problema para o meio fsico de comunicao.

Existem quatro condies para que possa ter uma ocorrncia de deadlock. So elas: Condio de excluso mutua pelo menos um recurso dever ser mantido em modo no-compartilhado; ou seja, apenas um processo de cada vez pode usar esse recurso. Se outro processo solicitar esse recurso, o processo solicitante dever ser retardado at que o recurso tenha sido liberado. Condio de posse e espera deve haver um processo que esteja mantendo pelo menos um recurso e esteja esperando para obter recursos adicionais que estejam sendo mantidos por outros processos no momento. Condio de no preempo os recursos no podem sofrer preempo; ou seja, um recurso s pode ser liberado voluntariamente pelo processo que o mantm, depois que esse processo tiver completado sua tarefa. Condio de espera circular deve haver um conjunto {P0, P1, ..., Pn} de processos em espera, de modo que P0 esteja esperando p um recurso que mantido por P1, P1 esteja esperando por um recurso que mantido por P2 ... Pn-1, esteja esperando por um recurso que mantido por Pn e Pn esteja esperando por um recurso que mantido por P0. Todas estas condies devem estar presentes para que ocorra um deadlock. Se alguma delas falhar, ser garantida a no ocorrncia de um deadlock.

2.

DEFINIO

Segundo Tanenbaum, deadlock pode ser formalmente definido como: "Um conjunto de processos estar em situao de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poder fazer acontecer". Podemos citar como exemplo de situao de deadlock, no relacionado a computao, mas que facilita o entendimento do que seja uma situao de deadlock, dois carros seguindo em direo oposta numa pista que permite apenas a passagem de um veculo. Nesse caso os dois ficam impedidos de continuar seu percurso. Um deadlock, em computao, ocorre normalmente com recursos como dispositivos, arquivos, memria, entre outros. Na figura 1 ilustramos graficamente uma situao de deadlock, onde o processo P5 est bloqueado espera do recurso R3. Entretanto, ele no est em deadlock, pois o processo P2 no est bloqueado. Ele pode executar at o fim, liberar o recurso R3, e ento o processo P5 poder executar. O mesmo no ocorre com os processos P1, P3 e P4. O processo P4 est bloqueado espera do recurso R2, ocupado pelo processo P1. Os processos P1 e P3 esto bloqueados espera do recurso R1, ocupado pelo processo P4. Logo, P1, P3 e P4 esto em deadlock.

3.

ALGORITMO DO AVESTRUZ

A estratgia mais simples para lidar com o deadlock a mesma da avestruz frente a um perigo: colocar a cabea em um buraco na areia e fingir que o problema no existe. Apesar de teoricamente inaceitvel, esta soluo a mais utilizada devido aos seguintes fatores: (i) baixa probabilidade de ocorrncia de deadlock, muito menor do que da ocorrncia de quebra do sistema por erros no prprio S.O., em compiladores ou no hardware; (ii) o alto preo pago pelos usurios para se prevenir os deadlocks. O UNIX utiliza este mtodo.

4. ESTRATGIAS PARA TRATAR O DEADLOCK


As situaes de deadlock podem ser tratadas ou no em um sistema, os desenvolvedores devem avaliar o custo/benefcio que essas implementaes podem trazer. Normalmente, as estratgias usadas para detectar e tratar as situaes de deadlocks, geram grande sobrecarga, podendo at causar um dano maior que a prpria ocorrncia do deadlock, sendo, s vezes, melhor ignorar a situao. Figura 1: Representao de processos e recursos Ento basicamente podemos definir trs mtodos distintos para tratar os problemas dos deadlocks: (i) podemos usar um protocolo para garantir que o sistema nunca entre em deadlock;

(ii) podemos permitir que o sistema entre em deadlock e em seguida se recupere; (iii) podemos ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema; (iv) podemos prevenir a ocorrncia de deadlock negando o surgimento de uma das quatro condies necessrias para gerar um deadlock. Sendo assim, temos trs estratgias para tratamento de deadlocks: Deteco e Recuperao, Evitar Deadlock e Preveno.

4.1

Detectar e Recuperar deadlocks

O sistema permite que ocorra o deadlock e depois executa o procedimento de recuperao, que se resume na deteco da ocorrncia e na recuperao posterior do sistema. Para deteco do deadlock, deve-se implementar no sistema uma estrutura de dados que armazene as informaes sobre os processos e os recursos alocados a eles e essas reflitam a situao de cada processo/recurso no sistema. Porm, importante ressaltar que o simples procedimento de atualizao dessas estruturas gera sobrecarga no sistema, pois toda vez que o processo aloca, libera ou requisita um recurso, elas precisam ser atualizadas. Algumas das tcnicas de deteco utilizadas so: Figura 2: (a) grafo de recurso; (b) ciclo extrado do grafo de recurso

4.1.1 Deteco de deadlocks com um recurso de cada tipo


Se tem apenas um recurso de cada tipo (somente uma impressora, um drive de CD, um drive de disquete). Existe um algoritmo para detectar se existem ciclos no grafo dos processos e recursos, sendo que na presena de qualquer processo que faa parte de um ciclo est em situao de deadlock.

4.1.2 Deteco de deadlocks com mltiplos recursos de cada tipo


O algoritmo baseia-se em um ambiente que possui vrios recursos do mesmo tipo e os processos solicitam apenas pelo tipo de recursos, no especificando qual recurso desejam utilizar. Uma vez que o algoritmo de deteco de deadlocks bem sucedido, o que se far em seguida a recuperao do sistema da situao de deadlock e coloc-lo novamente em condio de funcionamento normal. As tcnicas utilizadas para recuperao so:

4.1.3

Recuperao por meio de preempo

Retirar o recurso de um processo e d-lo a outro sem que o processo proprietrio do recurso perceba a falta do mesmo. No entanto esta estratgia muito dependente da natureza do recurso, pois alguns recursos tornam esta operao muito difcil ou at mesmo impossvel. A escolha do processo que ser suspenso depende amplamente de quais processos tem recursos passveis de serem facilmente retomados sem serem prejudicados.

4.1.4

Recuperao por meio de reverso de estado

O sistema operacional, ao longo da execuo dos processos vai guardando imagens dos estados do processo, para que fique como que um posto de fiscalizao do processo. No guarda apenas os estados dos processos, como guarda tambm os recursos associados ao processo no momento em que criado o

posto de fiscalizao. O sistema no sobrepe um posto de fiscalizao novo a um j guardado anteriormente. Ele cria sempre uma imagem nova. Depois que o algoritmo de deteco de deadlocks detecta um deadlock os processos includos no deadlock voltam a estados anteriores.

acabar por entrar em deadlock. Para evitar o deadlock, B dever ser suspenso at A requisitar e liberar o plotter.

4.2.2

Estados seguros e no seguros

4.1.5 Recuperao por meio de eliminao de processos


A maneira mais grosseira, mas tambm a mais simples matar um ou mais processos envolvidos no deadlock. Com um pouco de sorte os outros processos podero ser capazes de prosseguir. De preferncia deve ser eliminado um processo que seja capaz de ser re-executado desde seu incio de forma a evitar efeitos indesejveis e inconsistncias no sistema. Por exemplo, processos de atualizao de banco de dados nem sempre passvel de ser executado com segurana uma segunda vez, devido a possveis inconsistncias de registro na base de dados.

considerado um estado seguros e ele no est em situao de deadlock e se existe alguma ordem de escalonamento na qual todo o processo possa ser executado at sua concluso, mesmo se de repente, todos eles requisitarem, de uma s vez, o mximo possvel de recursos. Um estado no seguro no uma situao de deadlock. um estado em que a partir do mesmo, o sistema no pode dar a garantia de que o processo vai acabar.

4.2.3

Algoritmo de banqueiro

4.2

Evitar deadlocks

Usado para determinar se um processo pode executar de maneira segura ou no. Todos os processos declaram o mximo de recursos que vo usar durante a execuo. A execuo permitida se a soma dos recursos requisitados menor que os recursos disponveis no sistema. O algoritmo verifica se a liberao de uma requisio pode levar a um estado no seguro. Em caso positivo, a requisio negada. Se a liberao de uma requisio levar a um estado seguro, ento ela atendida. Evitar deadlocks , em sua essncia, impossvel, pois como j dito, requer informaes sobre pedidos futuros.

O deadlock pode ser evitado, mas s quando certas informaes estiverem disponveis. O Sistema Operacional que adota esta estratgia, procura evitar a ocorrncia de deadlocks por meio de alocao cuidadosa de recursos. O sistema deve ser capaz de saber e decidir se liberar um recurso seguro ou no. O sistema deve ser capaz de decidir se liberar um recurso seguro ou no e somente fazer uma alocao quando ela for segura. Um algoritmo hipottico que faa uma escolha para evitar deadlocks, seria somente alocando recursos quando certas informaes estiverem disponveis antecipadamente. Abordaremos a seguir alguns processos que objetivam evitar deadlocks.

4.3

Preveno de Deadlock

Como j visto, evitar deadlock praticamente impossvel. Por isso, a preveno de deadlock tenta garantir que pelo menos uma das condies para ocorrncia de deadlock no acontea. Sabendo que so quatro as condies para que possa ocorrer uma situao de deadlock simultaneamente, a preveno procura eliminar pelo menos uma delas utilizando as seguintes tcnicas: (i) Condio de excluso mtua pode-se usar a tcnica de spooling, onde vrios processos podero gerar suas sadas ao mesmo tempo. No entanto, nem todos os dispositivos podem fazer uso de spool. (ii) Condio de posse e espera Os processos devem pedir os recursos antes de iniciarem a sua execuo. Um problema que muitos processos s sabem quais so os recursos vo precisar aps serem inicializados e executados. (iii) Condio de no preempo Se um processo tiver a posse de um dispositivo e estiver no meio do seu uso, uma vez preemptado por um segundo processo, o ato de retornar a posse do dispositivo ao primeiro processo, complicado na melhor das hipteses e impossvel na pior delas. (iv) Condio de espera circular Uma maneira de evitar fornecer uma numerao global de todos os recursos. Processos podem requisitar recursos sempre que necessrio, mas todas essas solicitaes devem ser feitas em ordem numrica. O processo pode requisitar o recurso R1 e em seguida o recurso R2 mas se estiver de posse de R2 e quiser requisitar o R1, deve antes liberar o R2 para s aps requisitar o recurso R1. Estas estratgias so fceis de implementar em certos sistemas, porm a avaliao de custo/benefcio deve ser levada em considerao.

4.2.1

Trajetria dos recursos

Figura 3:. Trajetria dos recursos de dois processos.

Algo importante a ser visto neste exemplo ilustrado na figura 3, o ponto t, onde B estar requisitando um recurso. O sistema deve decidir se lhe d o direito de uso ou no. Se o direito de uso for concedido, o sistema entrar em uma regio insegura e

5. CANAIS VIRTUAIS E SEU USO NO PROBLEBA DE DEADLOCKS EM REDES INTRA CHIP


Nas redes diretas, cada nodo de chaveamento possui um nodo de processamento associado, e esse par pode ser visto como um elemento nico dentro do sistema, tipicamente referenciado pela palavra nodo. Nas redes indiretas os nodos de processamento possuem uma interface para uma rede de nodos de chaveamento. Somente alguns nodos de chaveamento possuem conexes para nodos de processamento e apenas esses podem servir de fonte ou destino de uma mensagem. As redes de interconexo so compostas por: nodos de chaveamento e canais fsicos. Em geral, cada nodo de chaveamento em uma rede de interconexo possui um conjunto de buffers e um crossbar. Para cada canal fsico, h um buffer de entrada associado, o qual armazena os flits recebidos para que depois os mesmos sejam posteriormente enviados. Enquanto um pacote A tem um buffer alocado, nenhum outro pacote poder utilizar o canal a ele associado at que o pacote A o libere. Se o pacote A ficar bloqueado na rede enquanto ocupa o buffer, o canal associado fica ocupado e nenhum outro pacote pode us-lo. Canais virtuais dissociam a alocao de um nico buffer por canal fsico, dividindo-o em vrios canais virtuais, proporcionando assim a associao de vrios buffers para cada canal fsico. Se um pacote A aloca um buffer associado a um canal virtual, outro pacote pode alocar um outro buffer associado a outro canal virtual do mesmo canal fsico. A Figura 4 ilustra a adio de dois canais virtuais para cada canal fsico rede de interconexo. Enquanto o pacote A transmitido por um dos canais virtuais do canal fsico N, o pacote B pode ser transmitido pelo outro canal virtual do mesmo canal fsico. Adicionar canais virtuais a uma rede de interconexo anlogo a adicionar pistas (lanes) em uma estrada. Uma rede sem canais virtuais formada por estradas de uma s pista. Nesse tipo de rede, um pacote bloqueado ocupando um canal bloqueia todos os demais pacotes que precisam desse canal. Adicionando canais virtuais diminui-se o nmero de pacotes bloqueados, ou seja, reduz-se o congestionamento na rede.

Figura 4 - Canais fsicos divididos em canais virtuais. Os canais virtuais foram apresentados pela primeira vez, com o intuito de prevenir deadlocks que podem ocorrer em redes que utilizam chaveamento wormhole e roteamento adaptativo. O deadlock ocorre quando existe uma dependncia cclica de recursos na rede. A Figura 5 mostra parte de uma rede de interconexo com quatro roteadores (1, 2, 3 e 4) possuindo cada um quatro portas bidirecionais (N, S, E, e W) conectadas a um ncleo crossbar. Cada um dos roteadores tem um pacote a ser transmitido. O roteador 1 tem um pacote A que tem como destino o roteador 4. O roteador 2 tem um pacote B que tem como destino o roteador 3. O roteador 3 tem um pacote C que tem como destino o roteador 2. O roteador 4 tem um pacote D que tem como destino o roteador 1.

Figura 5 Dependncia cclica que origina o deadlock. A dependncia cclica ocorre porque existem quatro pacotes sendo transmitidos simultaneamente na rede, e cada um dos pacotes utiliza um canal que requisitado por outro pacote para que este ltimo atinja seu destino. Por exemplo, os flits do pacote A comeam a ser transmitidos para o roteador 2 pela porta de sada E. Chegando no roteador 2 pela porta de entrada W, o pacote requisita a porta de sada S para chegar ao seu destino (roteador 4), porm esta porta j est em uso pelo pacote B. O mesmo ocorre com os demais pacotes que esto sendo transmitidos, fechando o ciclo, dando origem ao deadlock.

A soluo para o problema apresentado na Figura 5 pode ser obtida dividindo cada um dos canais fsicos em dois canais virtuais, quebrando assim a dependncia cclica, como ilustra a Figura 6. Retomando o exemplo do pacote A, assim que seus flits chegam pela porta de entrada W do roteador 2, ele requisita a porta de sada S. Essa porta j est com um dos canais virtuais ocupado pelo pacote B, porm, o outro canal virtual esta disponvel, logo o pacote A passa a utiliz-lo para atingir seu destino.

todos os recursos que poder usar, mas, uma lista ordenada crescente, do primeiro processo que ser requisitado at o ultimo. Fazendo isso o SO no precisa dar ao processo todos os recursos de uma s vez, acarretando em baixo desempenho. O sistema pode liberar os recursos conforme o processo for requisitando, mas sabendo quais os prximos recursos que sero requisitados, o SO pode usar algum tipo de poltica para gerenciar esses recursos e assim saber a ordem em que os processos os requisitaro, prevenindo ento um possvel deadlock.

7.

CONCLUSO

Deadlock um problema potencial em qualquer sistema operacional. Um estado de deadlock ocorre quando dois ou mais processos esto esperando indefinidamente por um evento que s pode ocorrer por um dos processos em espera. Existem alguns mtodos para tratar deadlocks, os quais foram citados neste trabalho: deteco e recuperao, evitar deadlock e preveno de deadlock. Uma das estratgias mais simples de tratar deadlock, seria ignor-lo, porm, necessrio uma anlise das necessidades da empresa, para o implemento ou no das estratgias de tratamento do deadlock, assim como, avaliar o custo/benefcio que essas implantaes podem gerar. Nas dcadas de 60 e 70 podemos verificar a existncia de muitas pesquisas na reas de sistemas operacionais com o objetivo de solucionar os problemas de deadlock. Contudo atualmente poucos estudiosos tem se dedicado a este problema devido ao fato de que muitos outros autores j proporam solues mas que no so de fato implementadas nos sistemas operacionais mais usados, visto que exige um alto grau de processamento para identificar deadlocks, sendo assim um desperdcio j que os deadlocks acontecem ocasionalmente. Deadlocks no ocorrem apenas em sistemas operacionais, o termo tambm usado em redes intra chip pelo mesmo motivo de dependncia cclica.

Figura 6 Quebrando a dependncia cclica com o uso de canais virtuais.

6.

PROPOSTA

Garantir que um processo no requisite recursos quando j tem outros recursos em seu poder. Isso pode ser feito, exigindo que todos os recursos de que o processo precisa sejam requeridos no incio do seu processamento, ou no incio de uma fase dele, quando o processo est sem recurso algum em seu poder. Silberschatz (2000) ilustra a diferena entre esses dois protocolos com um exemplo envolvendo arquivo a ser classificado, drive de fita e uma impressora. Ele conclui que requisitar todos os recursos no incio do processamento pode acarretar baixa performance no sistema, pelo fato de recursos serem alocados a um processo e no serem usados durante um grande intervalo de tempo. Alm disso, apresenta um problema para o que Tanenbaum (2003) expe como soluo: teria de ser possvel garantir que um recurso no fosse inutilizado para o uso do processo no intervalo entre sua liberao (em uma fase) e sua realocao para o mesmo processo (em outra fase). Outro problema seria a possibilidade de preterio indefinida de um processo que requisitasse recursos muito requisitados. Nossa proposta seria tambm um sistema operacional onde todo processo, ao iniciar sua execuo, informaria ao uma lista de

8.

REFERNCIAS BIBLIOGRFICAS
MORAES, F. G.: Canais Virtuais em Redes Intra-Chip Implementao na rede HERMES, In: XI Workshop IBERCHIP, 2005, Salvador. IBERCHIP 2005, 2005. v. 1. pp. 320-321.

[1] CARARA, E.; MELLO, A. V.; CALAZANS, N. L. V.;

[2] COFFMAN, E.C.; ELPHICK, M.J.; SHOSHANI, A.:

System Deadlocks, In: Computing Surveys, vol. 3, Junho 1971, pp. 67-78.
[3] DALLY, W. J.; SEITZ, C. L.: Deadlock-Free Message

Routing in Multiprocessors Interconnection Networks, In: IEEE Transactions on Computers, v.36(5), 1987, pp. 547553.
[4] DIJKSTRA, E. W.; Go To Statement Considered

Harmful Communications of the ACM, Vol. 11, No. 3, Maro 1968, pp. 147-148.

[5] HABERMANN, A. N.: Prevention of system deadlocks,

[9] NEWTON, G.: Deadlock Prevention, Detection, and

In: Communications of the ACM CACM, v.12 n.7, Julho 1969, pp. 373-ff.
[6] HAVENDER, J. W.: Avoiding Deadlock in Multitasking

Resolution: An Annotated Bibliography, In: Operating Systems Review, vol. 13, Abril 1979, pp. 33-44.
[10] SILBERSCHATZ, A.; GALIN, P.; GAGNE, G.:

Systems, In: IBM Systems Journal, vol. 7, 1968, pp. 7484.


[7] HOLT, R. C.: Some Deadlock Properties of Computer

"Sistemas Operacionais: conceitos e aplicaes", Editora Elsvier 8 reimpresso Rio de Janeiro: 2000
[11] TANENBAUM, A. S.: "Sistemas Operacionais

Systems, In: Computing Surveys, vol. 4, Setembro 1972, pp. 179-196.


[8] ISLOOR, S. S.; MARSLAND, T. A.: The Deadlock

Modernos", Editora Prentice Hall 2 ed. So Paulo: 2003


[12] ZOBEL, D.: The Deadlock Problem: A Classifying

Problem: An Overview, In: Computer, vol. 13, Setembro 1980, pp. 58-78.

Bibliography, In: Operating Systems Review, vol. 17, Outubro 1983, pp. 6-16.

Você também pode gostar