Você está na página 1de 12

Programao Concorrente

DEADLOCK

2.3 Exemplo 3.....................................................................................................................4 3 Diagramas de processos e recursos.................................................................................5 4 Condies Necessrias para a ocorrncia de deadlock....................................................7 5 Mtodo para tratar Deadlocks..........................................................................................8 5.1 Ignorar o problema (algoritmo da avestruz).................................................................8 5.2 Deteco e recuperao dos deadlocks .......................................................................8 5.3 Preveno dinmica......................................................................................................8 5.4 Preveno estrutural.....................................................................................................8

6 Recuperao de deadlocks..............................................................................................9 6.1 Recuperao atravs de preempo ............................................................................9 6.2 Recuperao atravs de operaes de rollback............................................................9 6.3 Recuperao atravs de eliminao de processos........................................................9 7 Preveno de deadlocks..................................................................................................9 8 Algoritmo do banqueiro de Dijkstra...............................................................................10 9 Concluso......................................................................................................................11 10 Referncias Bibliogrficas............................................................................................12

1 INTRODUO

2 DEADLOCK Um deadlock acontece quando duas ou mais tarefas bloqueiam uma outra permanentemente, sendo que cada uma tem o bloqueio de um recurso, que a outra tarefa est tentando bloquear.

2.1 EXEMPLO 1 A transao A adquire um bloqueio compartilhado da linha 1. A transao B adquire um bloqueio compartilhado da linha 2. A transao A agora solicita um bloqueio exclusivo na linha 2 e bloqueado at que a transao B termine e libere o bloqueio compartilhado que tem na linha 2. A transao B agora solicita um bloqueio exclusivo na linha 1 e bloqueado at que a transao A termine e libere o bloqueio compartilhado que tem na linha 1.

A transao A no pode terminar at que a transao B termine, mas a transao B est bloqueada pela transao A. Essa condio tambm chamada de dependncia cclica: a transao A tem uma dependncia da transao B, e a transao B fecha o crculo tendo uma dependncia da transao A. Ambas as transaes em um deadlock esperaro indefinidamente, a menos que o deadlock seja quebrado por um processo externo. 2.2 EXEMPLO 2 Outro exemplo onde erros de deadlock ocorrem no banco de dados: Suponha que uma empresa tenha vrios vendedores e vrios pontos de venda/caixas. O vendedor A vendeu 1 martelo e 1 furadeira. O sistema ento solicita o travamento do registro da tabela ESTOQUE que contm o total de martelos em estoque e em seguida solicita o travamento do registro que contm o total de furadeiras em estoque. De posse da exclusividade de acesso aos dois registros, ele l a quantidade de martelos, subtrai 1 e escreve de novo no registro, o mesmo com o registro de furadeiras. Observe, no entanto que existem diversos caixas operando simultaneamente de forma que se algum outro caixa naquele exato instante estiver vendendo um furadeira, ele ficar de aguardando a liberao do registro das furadeiras para depois alter-lo. Note que ele s altera os registro depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registro. Suponha agora que em outro caixa a venda foram vendidos 1 furadeira e 1 martelo e que o outro caixa solicitou o travamento do registro com a quantidade de furadeiras e agora quer o acesso ao de martelos, no entanto o de martelos est travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e tambm no consegue acesso ao outro registro que falta para terminar a operao. Isto um deadlock.

2.3 EXEMPLO 3 Uma outra forma de ilustrar um deadlock pode ser com um exemplo de uma lei aprovada pela assembleia do estado norte-americano de Kansas no incio deste sculo. Dizia, em parte: "Quando dois trens se aproximarem um do outro em um

cruzamento, ambos devero parar completamente e nenhum dos dois dever ser acionado at que o outro tenha partido."

Figura 2.1: Representao de um deadlock 3 DIAGRAMAS DE PROCESSOS E RECURSOS O estudo dos bloqueios perptuos pode ser bastante facilitado atravs da utilizao de diagramas especiais denominados diagramas de alocao de recursos ou diagramas de processo versus recursos ou ainda grafos de alocao de recursos [SGG01, p. 162]. Nestes diagramas existem apenas duas entidades, processos e recursos, interligados por arcos direcionados. Os processos so representados atravs de quadrados ou retngulos. Os recursos so representados atravs de circunferncias. Os arcos direcionados unindo processos e recursos so usados com dois significados distintos: requisio de recursos e alocao de recursos. Na Figura 2 temos os elementos construtivos possveis deste tipo de diagrama.

Figura 3.1: Elementos do Diagrama de Processos x Recursos

Neste exemplo, embora exista disputa por recursos (processos B e E requisitam o uso do recurso W), no existe nenhum caminho fechado, ou seja, no existe qualquer deadlock, sendo assim este diagrama pode ser reduzido: 1. D finaliza o uso de Z.

2. Com Z livre, C libera W para alocar Z. Tabela 3.1: Exemplo de alocao e requisio de recursos

Figura 3.2: Diagrama de processos e recursos da Tabela 3.1

3. Com W livre, ou B ou E podero aloc-lo. Se B for favorecido nesta disputa, alocando W, embora E permanea em espera, Y ser liberado. 4. Com Y livre, A libera X para alocar Y. 5. No surgindo novos processos, B libera W. 6. Com W livre, E pode prosseguir sua execuo. A reduo, independentemente do tempo que os processos utilizaro os recursos alocados, mostra que tais processos sero atendidos dentro de um intervalo de tempo menor ou maior. A despeito de questes relacionadas com desempenho, esta a situao desejvel em um sistema.

Diferentemente, a alocao e requisio de recursos em um sistema pode configurar um deadlock. Utilizando o diagrama de alocao de recursos, poderamos representar um deadlock envolvendo dois processos e dois recursos, como ilustra a Figura 3.3. Atravs destes diagramas, fica clara a situao da formao de uma cadeia circular (um caminho fechado) ligando uma sequencia de requisies e alocaes de recursos do sistema por parte de um grupo de processos.

Figura 3.3: Representao de deadlock envolvendo 2 processos

4 CONDIES NECESSRIAS

PARA A OCORRNCIA DE DEADLOCK

O deadlock ocorre naturalmente em alguns sistemas. No entanto, necessrio ressaltar que tais sistemas precisam obedecer a algumas condies para que uma situao de deadlock se manifeste. Essas condies esto listadas abaixo, onde as trs primeiras caracterizam um modelo de sistema, e a ltima o deadlock propriamente dito: processos que estejam de posse de recursos obtidos anteriormente podem solicitar novos recursos. Caso estes recursos j estejam alocados a outros processos, o processo solicitante deve aguardar pela liberao do mesmo; 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. excluso mtua: Pelo menos um recurso dever ser mantido em modo nocompartilhado; 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. 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. espera circular: dado um conjunto de processos {P1, P2, ..., Pn} em espera, P1 est esperando por um recurso mantido por P2; P2 est esperando um recurso

mantido por P3 e assim sucessivamente, at que Pn esteja esperando por um recurso alocado por P1.

5 MTODO PARA TRATAR DEADLOCKS Segundo Tanenbaum [TAN92, p. 245] existem basicamente quatro alternativas Para o tratamento dos bloqueios perptuos, ou seja, quatro estratgias bsicas para resolvermos os problemas dos deadlocks: 5.1 IGNORAR O PROBLEMA (ALGORITMO DA AVESTRUZ) Apesar de no parecer uma soluo para o problema, devem ser consideradas a possibilidade de ocorrncia dos deadlocks e os custos computacionais associados ao seu tratamento. A alternativa mais simples realmente ignorar o problema e conviver com a possibilidade de sua ocorrncia. Os sistemas UNIX utilizam esta aproximao favorecendo aspectos de performance em situaes mais comuns. 5.2 DETECO E RECUPERAO DOS DEADLOCKS Outra alternativa permitir que os bloqueios ocorram, procurando-se detect-los e recuper-los. Deve-se utilizar algum algoritmo que produza um diagrama de alocao de recursos, analisando em busca de caminhos fechados (deadlocks) utilizando alguma tcnica de recuperao. Estes algoritmos especiais, que apesar da sobrecarga que provocam, podem evitar maiores transtornos no sistema possibilitando que na ocorrncia dos deadlocks estes sejam descobertos e eliminados. 5.3 PREVENO DINMICA Os deadlocks podem ser prevenidos atravs de procedimentos cuidadosos de alocao que analisam constantemente a possibilidade de formao de cadeias circulares. Tais algoritmos tambm so complexos e acabam por onerar o sistema computacional. 5.4 PREVENO ESTRUTURAL Os deadlocks podem ser estruturalmente eliminados de um sistema atravs da negao de uma ou mais das quatro condies de ocorrncia. Para isto devem ser tratadas as condies de Coffman et al., o que resumidamente apresentado na Tabela abaixo: Para garantir que um sistema nunca entre em deadlock possvel usar um esquema de preveno de deadlocks ou de impedimento de deadlocks. Esta preveno realizada atravs de um conjunto de mtodos que garantem que pelo menos uma das situaes necessrias para que um deadlock acontea seja falha.

Basicamente, isso feito limitando a forma como as solicitaes de recursos acontecem. Caso o sistema operacional no utilize um esquema de preveno, ser necessrio um mecanismo de deteco e recuperao de deadlocks. Pelo fato do deadlock no ser evitado, at que ele seja descoberto provvel que o desempenho do sistema tenha sofrido uma considervel queda.

6 RECUPERAO

DE DEADLOCKS

Ainda que os deadlocks ocorram, dentro de certas circunstncias possvel resolv-los, isto , recuper-los ou elimin-los, utilizando algumas ttcnicas: 6.1 RECUPERAO ATRAVS DE PREEMPO Retirando-se algum recurso envolvido no bloqueio perptuo do processo que o aloca permite a quebra do caminho fechado e consequente soluo do deadlock. O problema reside que nem sempre um recurso pode ser retirado de um processo sem efeitos colaterais prejudiciais a este processo. 6.2 RECUPERAO ATRAVS DE OPERAES DE ROLLBACK Exige a implementao de checkpoints, isto , um mecanismo de armazenamento de estados seguros do sistema atravs da cpia dos estados individuais dos processos em arquivos especiais. Isto possibilita que tais estados sejam retomados a partir daquele ponto. Esta soluo, alm da difcil implementao, exige muitos recursos e tem elevado custo computacional, embora resolva bem o problema. 6.3 RECUPERAO ATRAVS DE ELIMINAO DE PROCESSOS Esta maneira mais simples, embora tambm a mais drstica. Um ou mais dos processos identificados como envolvidos no bloqueio perptuo podem ser sumariamente eliminados, de modo que o bloqueio seja resolvido. Enquanto alguns processos podem ser seguramente reiniciados (p.e., uma compilao), procedimentos de atualizao em bancos de dados nem sempre podem ser interrompidos e reiniciados. A eliminao de processos que no podem ser simplesmente reiniciados pode provocar prejuzos ao sistema.

7 PREVENO

DE DEADLOCKS

A preveno de deadlocks a estratgia preferencialmente adotada pelos projetistas de sistemas, adotando-se uma poltica que assume o custo da preveno como alternativa aos prejuzos possveis da ocorrncia dos deadlocks e de sua

10

eliminao. Para prevenir-se a ocorrncia dos deadlocks podem ser adotadas uma ou mais das seguintes estratgias, tal como proposto por Havender (1968): 1. Um processo s pode solicitar um recurso se liberar o recurso que detm. 2. Um processo que tem negado o pedido de recurso adicional deve liberar o recurso que atualmente detm. 3. Se a solicitao de recursos ocorrer em ordem linear ascendente, a espera circular no consegue se formar. Mesmo com as quatro condies estando presentes, possvel evitar-se a ocorrncia dos deadlocks utilizando-se o algoritmo do banqueiro de Dijkstra.

8 ALGORITMO

DO BANQUEIRO DE

DIJKSTRA

O algoritmo do banqueiro, proposto por Dijkstra em 1965, uma soluo clssica no estudo dos sistemas operacionais que visa ilustrar as questes associadas concesso de recursos aos processos e as consequncias possveis destas concesses [DEI92, p. 167] [TAN92, p. 256]. Este algoritmo efetua um mapeamento dos recursos e processos de forma a considerar, a cada pedido de uso de um recurso, se tal alocao leva a um estado seguro ou no. Se o estado seguinte seguro, o pedido concedido, caso contrrio tal solicitao adiada at que possa conduzir a um estado seguro. Na prtica, o problema desta soluo que cada processo deve especificar, inicialmente, a quantidade mxima de cada recurso que pretenda utilizar. Alm disso, a quantidade de processos varia a cada instante em sistemas reais. Se um novo processo conduzir a um estado inseguro, sua criao dever ser adiada, o que tambm pode gerar um deadlock. Outro ponto que a quantidade de recursos pode variar (geralmente diminuir com falhas no sistema) aumentando muito a complexidade desta soluo e, portanto, sua aplicao prtica.

11

9 CONCLUSO

12

10 REFERNCIAS BIBLIOGRFICAS

https://docs.google.com/viewer? a=v&q=cache:2e6vJya3gPUJ:regulus.pcs.usp.br/~jean/so/AULA%252012%2520%2520Deadlocks.pdf+&hl=ptBR&gl=br&pid=bl&srcid=ADGEEShWWVReRvF3L7BkwY4xzLzXzz0gdgzMa2cyCm_ fGM_NWixcnv5KFv8ZAshX63UDPqQKzYMgqJ9pC_xB_YE3Ux0abi_Jx45vBfUfJ_Y OUOEQD91LFAkIcM5hh2sOm95EeGn1lW3&sig=AHIEtbS5kvrc2FmR42tDYE82NFrblU 7uJw

http://msdn.microsoft.com/pt-br/library/ms177433.aspx

http://msdn.microsoft.com/pt-br/library/ms178104.aspx

http://msdn.microsoft.com/pt-br/library/ms177453.aspx

http://pt.wikipedia.org/wiki/Deadlock

Você também pode gostar