aula 5 - deadlock

5
Webartigos.com Publicação de artigos e monografias Título: Deadlock Autor(a): Ever Lopes Endereço da publicação: http://www.webartigos.com/artigos/deadlock/3416/ Publicado em 02 de janeiro de 2008, às 00h00min em Tecnologia Deadlock 1. Introdução Deadlock é um problema significativo que pode surgir até mesmo numa comunidade que coopera ou compete por processos. Ele é uma falha e não um erro, ocorre quando mais de um processo requer um determinado recurso ao mesmo tempo. O deadlock cria uma situação em que um ou mais processos nunca correrão para conclusão sem recuperação. Dijkstra introduz deadlock como: "Efeito colateral de estratégias de sincronização, porque dois processos ao atualizar duas variáveis compartilhadas, usam uma lock flag, um para requisitar valores de uma variável, o outro para atualizar valor da variável". Situações semelhantes ocorrem periodicamente num conjunto de processos que estão a compartilhar recursos. Memória, os drives de uma impressora, um drive de disquetes são todos exemplos de recursos. Um processo pode bloquear quando é pedido qualquer um desses recursos e os mesmos estão ocupados, assim qualquer um pode contribuir para entrar na situação Deadlock. 2. Definição Segundo Tanenbaum, deadlock pode ser formalmente definido como: "Um conjunto de processos estará em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poderá fazer acontecer". (pag. 120) Para um melhor entendimento podemos afirmar que deadlock é um termo empregado para traduzir um problema que ocorre quando um grupo ou conjunto de processos competem entre si. O aparecimento do mesmo depende das características de dois ou mais programas diferentes e dos respectivos processos a executar pelos diferentes programas ao mesmo tempo. Esses programas podem ser executados de forma repetitiva usando diferentes processos sem que ocorra a situação de deadlock, porém, basta um único processo padrão complicado para se entrar em deadlock. Dijkstra explica a situação de deadlock através da seguinte ilustração: Figura 1. Três processos em deadlock. Fonte: Dijkstra Ou seja, o Processo 1 reserva para si o Recurso 1, por sua vez o Processo 2 e o Processo 3 reservam respectivamente para si o Recurso 2 e o Recurso 3. Por exemplo se um dos outros processos necessitar de um dos recursos anteriormente reservados por outros processos, como acontece no diagrama da figura anterior entramos numa situação de Deadlock. Nenhum dos processos pode continuar, porque para isso acontecer, os mesmos necessitariam que os recursos reservados fossem disponibilizados. A não ser que um dos processos detecte a situação e abandonando o pedido do recurso anteriormente reservado por outro processo, e liberte ao mesmo

Upload: brunoxaviercalmon

Post on 06-Feb-2016

12 views

Category:

Documents


0 download

DESCRIPTION

Aula de Deadlock para estudo de programação concorrente

TRANSCRIPT

Page 1: Aula 5 - Deadlock

Webartigos.com ­ Publicação de artigos e monografiasTítulo: DeadlockAutor(a): Ever LopesEndereço da publicação: http://www.webartigos.com/artigos/deadlock/3416/

Publicado em 02 de janeiro de 2008, às 00h00min em TecnologiaDeadlock

1. IntroduçãoDeadlock é um problema significativo que pode surgir até mesmo numa comunidade que coopera oucompete por processos. Ele é uma falha e não um erro, ocorre quando mais de um processo requer umdeterminado recurso ao mesmo tempo.

O deadlock cria uma situação em que um ou mais processos nunca correrão para conclusão semrecuperação.

Dijkstra introduz deadlock como: "Efeito colateral de estratégias de sincronização, porque doisprocessos ao atualizar duas variáveis compartilhadas, usam uma lock flag, um para requisitar valoresde uma variável, o outro para atualizar valor da variável".

Situações semelhantes ocorrem periodicamente num conjunto de processos que estão a compartilharrecursos. Memória, os drives de uma impressora, um drive de disquetes são todos exemplos derecursos. Um processo pode bloquear quando é pedido qualquer um desses recursos e os mesmosestão ocupados, assim qualquer um pode contribuir para entrar na situação Deadlock.

2. DefiniçãoSegundo Tanenbaum, deadlock pode ser formalmente definido como: "Um conjunto de processosestará em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por umevento que somente um outro processo desse mesmo conjunto poderá fazer acontecer". (pag. 120)

Para um melhor entendimento podemos afirmar que deadlock é um termo empregado para traduzir umproblema que ocorre quando um grupo ou conjunto de processos competem entre si. O aparecimentodo mesmo depende das características de dois ou mais programas diferentes e dos respectivosprocessos a executar pelos diferentes programas ao mesmo tempo. Esses programas podem serexecutados de forma repetitiva usando diferentes processos sem que ocorra a situação de deadlock,porém, basta um único processo padrão complicado para se entrar em deadlock.

Dijkstra explica a situação de deadlock através da seguinte ilustração:

Figura 1. Três processos em deadlock. Fonte: Dijkstra

Ou seja, o Processo 1 reserva para si o Recurso 1, por sua vez o Processo 2 e o Processo 3 reservamrespectivamente para si o Recurso 2 e o Recurso 3. Por exemplo se um dos outros processos necessitarde um dos recursos anteriormente reservados por outros processos, como acontece no diagrama dafigura anterior entramos numa situação de Deadlock.

Nenhum dos processos pode continuar, porque para isso acontecer, os mesmos necessitariam que osrecursos reservados fossem disponibilizados. A não ser que um dos processos detecte a situação eabandonando o pedido do recurso anteriormente reservado por outro processo, e liberte ao mesmo

Page 2: Aula 5 - Deadlock

tempo o recurso por si reservado. Com isso, há a possibilidade de pelo menos um processo correr.

Podemos citar como exemplo de situação de deadlock, não relacionado a computação, mas quefacilita o entendimento do que seja uma situação de deadlock, dois carros seguindo em direção opostanuma pista que permite apenas a passagem de um veículo. Nesse caso os dois ficam impedidos decontinuar seu percurso.

Um deadlock, em computação, ocorre normalmente com recursos como dispositivos, arquivos,memória, entre outros.

Existem algumas condições para que possa ter uma ocorrência de deadlock. São elas:

§Condição de exclusão mutua ­ Em um determinado instante, cada recurso esta em uma de duassituações: ou associado a um processo ou disponível.

§Condição de posse e espera ­ Processos que, em um determinado instante, retêm recursosconcedidos anteriormente podem requisitar novos recursos.

§Condição de não preempção ­ Recursos concedidos previamente a um processo não podem serforçosamente tomados desse processo eles devem ser explicitamente libertados pelo processo que osretêm.

§Condição de espera circular ­ Deve existir um encadeamento circular de dois ou mais processos;cada um deles encontra­se á espera de um recurso que está sendo utilizada pelo membro seguintedessa cadeia.

Todas estas condições devem estar presentes para que ocorra um deadlock. Se alguma delas falhar,então não ocorrerá um deadlock.

3. Estratégias para Tratar o DeadlockAs situações de deadlock podem ser tratadas ou não em um sistema, os desenvolvedores devemavaliar o custo/benefício que essas implementações podem trazer. Normalmente, as estratégias usadaspara detectar e tratar as situações de deadlocks, geram grande sobrecarga, podendo até causar um danomaior que a própria ocorrência do deadlock, sendo, às vezes, melhor ignorar a situação.

Existem três estratégias para tratamento de deadlocks: Detecção e Recuperação, Evitar Deadlock ePrevenção.

3.1. Detecção e Recuperação

O sistema permite que ocorra o deadlock e depois executa o procedimento de recuperação, que seresume na detecção da ocorrência e na recuperação posterior do sistema.

Para detecção do deadlock, deve­se implementar no sistema uma estrutura de dados que armazene asinformações sobre os processos e os recursos alocados a eles e essas reflitam a situação de cadaprocesso/recurso no sistema. Porém, é importante ressaltar que o simples procedimento de atualizaçãodessas estruturas gera sobrecarga no sistema, pois toda vez que o processo aloca, libera ou requisitaum recurso , elas precisam ser atualizadas.

Algumas das técnicas de detecção utilizadas são:

§Detecção de deadlocks com um recurso de cada tipo Se tem apenas um recurso de cada tipo

Page 3: Aula 5 - Deadlock

(somente uma impressora, ou um CD,...). Existe um algoritmo para detectar se existem ciclos no grafodos processos e recursos;

§Detecção de deadlocks com múltiplos recursos de cada tipo O algoritmo baseia­se em umambiente que possui vários recursos do mesmo tipo e os processos solicitam apenas pelo tipo derecursos, não especificando qual recurso desejam utilizar.

Uma vez que o algoritmo de detecção de deadlocks é bem sucedido, o que se fará em seguida é arecuperação do sistema da situação de deadlock e colocá­lo novamente em condição defuncionamento normal.

As técnicas utilizadas para recuperação, são:

§Recuperação por meio de preempção ­ Retirar o recurso a um processo e dá­lo a outro sem que oprocesso proprietário do recurso se aperceba.

§Recuperação por meio de reversão de estado ­ O sistema operativo, ao longo da execução dosprocessos vai guardando imagens dos estados do processo, para que fique como que um posto defiscalização do processo. Não guarda apenas os estados dos processos, como guarda também osrecursos associados ao processo no momento em que é criado o posto de fiscalização. O sistema nãosobrepõe um posto de fiscalização novo a um já guardado anteriormente. Ele cria sempre umaimagem nova. Depois que o algoritmo de detecção de deadlocks detecta um deadlock os processosincluídos no deadlock voltam a estados anteriores.

§Recuperação por meio de eliminação de processos ­ A maneira mais grosseira, mas também amais simples é matar um ou mais processos envolvidos no deadlock. Com um pouco de sorte osoutros processos poderão ser capazes de prosseguir.

3.2. Evitar DeadlockO deadlock pode ser evitado, mas só quando certas informações estiverem disponíveis.

O Sistema Operacional que adota esta estratégia, procura evitar a ocorrência de deadlocks por meio dealocação cuidadosa de recursos. O sistema deve ser capaz de saber e decidir se liberar um recurso éseguro ou não.

Abordaremos a seguir alguns processos que objetivam evitar deadlocks.

§Trajetória dos recursos a figura abaixo demonstra o funcionamento desse processo:

Figura 2. Trajetória dos recursos de dois processos. Fonte: Sistemas Operacionais Modernospág. 129.

Algo importante a ser visto neste exemplo é o ponto t, onde B estará requisitando um recurso. Osistema deve decidir se lhe dá o direito de uso ou não. Se o direito de uso for concedido, o sistemaentrará em uma região insegura e acabará por entrar em deadlock. Para evitar o deadlock, B deverá sersuspenso até A requisitar e liberar o plotter.

§Estados seguros e não seguros É considerado um estado segurose ele não esta em situação dedeadlock e se existe alguma ordem de escalonamento na qual todo o processo possa ser executado atésua conclusão, mesmo se de repente, todos eles requisitarem, de uma só vez, o máximo possível derecursos. Um estado não seguro não é uma situação de deadlock. É um estado em que a partir domesmo, o sistema não pode dar a garantia de que o processo vai acabar.

Page 4: Aula 5 - Deadlock

§Algoritmo de banqueiro ­ Usado para determinar se um processo pode executar de maneira seguraou não. Todos os processos declaram o máximo de recursos que vão usar durante a execução. Aexecução é permitida se a soma dos recursos requisitados é menor que os recursos disponíveis nosistema. O algoritmo verifica se a libertação de uma requisição pode levar a um estado não seguro.Em caso positivo, a requisição é negada. Se a libertação de uma requisição levar a um estado seguro,então ela é atendida.

Evitar deadlocks é, em sua essência, impossível, pois como já dito,requer informações sobre pedidosfuturos.

3.3. Prevenção de DeadlockComo já visto no ponto 3.3, evitar deadlock é praticamente impossível. Por isso, a prevenção dedeadlock tenta garantir que pelo menos uma das condições para ocorrência de deadlock, não aconteça.

Sabendo que são quatro as condições para que possa ocorrer uma situação de deadlocksimultaneamente, a prevenção procura eliminar pelo menos uma delas utilizando as seguintestécnicas:

1.Condição de exclusão mútua O processo solicita o recurso para uso de forma mutuamenteexclusiva. Essa condição é eliminada se o processo solicita todos os recursos que necessita em umaúnica vez.

2.Condição de posse e espera Os processos devem pedir os recursos antes de iniciarem a suaexecução.

3.Condição de não preempção Elimina­se essa condição se os recursos forem ordenados e osprocessos devem requisitar os recursos em uma seqüência que respeite esta ordem.

4.Condição de espera circular Pode ser eliminada se for construído um grafo e se for verificado,para cada requisição, se o atendimento não levará o sistema a um estado não seguro. As requisiçõesque levarem o sistema a um estado não seguro ou de deadlock não deverão ser atendidas.

Estas estratégias são fáceis de implementar em certos sistemas, porém a avaliação de custo/benefíciodeve ser levada em consideração.

4. ConclusãoDeadlock é um problema potencial em qualquer sistema operacional. Um estado de deadlock ocorrequando dois ou mais processos estão esperando indefinidamente por um evento que só pode ocorrerpor um dos processos em espera. Existem alguns métodos para tratar deadlocks, os quais foramcitados neste trabalho: detecção e recuperação, evitar deadlock e prevenção de deadlock.

Uma das estratégias mais simples de tratar deadlock, seria ignorá­lo, porém, é necessário uma análisedas necessidades da empresa, para o implemento ou não das estratégias de tratamento do deadlock,assim como, avaliar o custo/benefício que essas implantações podem gerar.

ReferenciasTanenbaum, Andrew S.. (2003) "Sistemass Operacionais Modernos", Editora Prentice Hall 2 ed. SãoPaulo.

Page 5: Aula 5 - Deadlock

Silberschatz, Abraham; Galin, Peter; Gagne, Grag. (2000). "Sistemas Operacionais: conceitos eaplicações", Editora Elsvier 8 reimpressão Rio de Janeiro.

Wikipedia.(2007). "Deadlock", http://pt.wikipedia.org/wiki/Deadlock, Novembro.

Programação Concorrente. (2007). "Deadlock",http://www.dc.ufscar.br/~mdchiodi/ProgramacaoConcorrente/ApostilaAula10.pdf, Novembro.

N. Ribeiro (2007). "Sistemas Operativos", http://ltodi.est.ips.pt/nribeiro/Lecturing/SO_02­03/A06.pdf., Novembro.

Silberschatz, Abraham; Karth, Henry F.; Sudarshan, S. (1999). "Sistema de Banco de Dados", EditoraMakron Books 3 ed. São Paulo.

Valador, Nelson. (2007). "Sistemas Operativos", http://alumni.ipt.pt/~nvalador/trab1/cap10.html,Novembro.

E.W. Dijkstra. (1968). "Go To Statement Considered Harmful, Communications of the ACM". Vol.11

Por Ever Lopes

Endereço da publicação: http://www.webartigos.com/artigos/deadlock/3416/

Webartigos.com ­ Publicação de artigos e monografais ­ Publique seu artigo emwww.webartigos.com/autores/cadastro/