Buscar

Trabalho Deadlock

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

ANHANGUERA EDUCACIONAL S.A.
Faculdade Anhanguera de Limeira
Curso: Ciência da Computação. Disciplina: Programação Concorrente.
 
 
Rodrigo Lucio Martins de Assis RA 9902000603
 
 
 
Deadlock.
 
Limeira
2017
Lista de Figuras
 Sinalizadores de Rastreamento em Banco de Dados........................................ 8
Sumário
1. Tipos de Deadlock....................................................................................................... 3
2. Como Evitar um Deadlock........................................................................................... 3
3. Como Recuperar um processo em Deadlock.............................................................. 5
4. Exemplos de Deadlock................................................................................................ 6
5. Deadlock em Banco de Dados.................................................................................... 7
6. Referências Bibliográficas............................................................................................8
Tipos de Deadlock
Existem dois tipos de deadlocks que são eles os que podem ocorrer em recursos de hardware(como por exemplo uma impressora) quanto em recursos de software (como por exemplos em registros em um banco de dados),esses recursos poder ser dois tipos: preemptíveis ou não-preemptíveis:
Um recurso preemptível é aquele que pode ser tomado do processo que estiver usando o recurso sem causar nenhum prejuízo para o processo (ex.: memória). 
Um recurso não-preemptível ao contrário de preemptível é aquele que não pode ser tomado do seu proprietário atual sem causar problemas no processamento corrente (ex.: impressora). Os deadlocks geralmente ocorrem quando recursos não-preemptíveis estiverem envolvidos
Como evitar um Deadlock
Quando um problema é descoberto, existem sempre inúmeras pesquisas e métodos de como tratar esse problema a fim de resolver o mesmo, o mesmo se deu com o Deadlock, que veio se tornando um problema comum, e com base na frequência em que esse problema aparece no programa podemos classifica-lo como bom ou ruim.
Existem alguns métodos que são utilizados para evitar um deadlock, sendo as primordiais inversas a sua causa:
Condição de Exclusão mútua - Todo recurso está ou associado a um processo ou disponível: 
Essa é uma das condições impossíveis de se combater em geral, pois sempre irá existir, pois por mais que exista o método de tratamento de exclusão mútua (que impede que dois processos ou threads acessem de forma simultânea um recurso compartilhado) em algum momento será necessário que essa condição aconteça.
Condição de posse e espera - Processos que retém recursos podem solicitar novos recursos. 
Condição impossível de se combater pois nesse caso um processo estará retendo recursos que em algum momento podem ser solicitados por outros processos e ele ainda sim pode solicitar novos recursos, o que acarreta em um processo em alguns momentos dependente e em outros independentes.
 Condição de não preempção - Recursos concedidos previamente não podem ser tomados a força. 
Condição em que é possível evitar, pois o problema está na disputa por recursos que foram concedidos previamente, o que torna os processos dependente de outros processos, porém ele não consegue trabalhar sem os seus recursos iniciais o que impede que outros processos tomem esses recursos dele a força. Para tratar isso devemos fazer com que os processos adquiram todos os recursos necessário antes da execução do mesmo.
Condição de espera circular - Deve ser uma cadeia circular previamente de 2 ou mais processos cada um está à espera de recursos retido pelo membro seguinte dessa cadeia.
Condição mais comum para ocorrência de um deadlock onde pode se evitar, porém seria necessária uma atenção muito grande quando se for programar para que não tenha esse looping de recursos e processos, com isso é muito mais comum esse tipo de deadlock ser tratado e não evitado.
 
Como recuperar um processo em Deadlock
Quando um processo se encontra em Deadlock existem alguns meios de se recuperar o processo:
Detecção e recuperação da situação de deadlock – consiste em basicamente detectar o local exato onde o problema ocorreu e buscar meios de trata-lo diretamente, com isso será necessário um bom conhecimento da área e realizar uma busca minuciosa na situação.
Evitar dinamicamente o deadlock, pela cuidadosa alocação dos recursos aos processos.
Prevenção do deadlock, através da negação de uma das quatro condições necessárias para que ocorra um deadlock – É o meio mais comum de se resolver porém ele deve ser aplicado antes de ocorrer o problema, o que acarreta em ser um método de prevenção e não de recuperação do mesmo.
Ignorar completamente o problema – Se o programa tiver meios de continuar a partir do deadlock e não alterar muito seu desempenho final, esse pode ser um dos meios mais rápidos para se recuperar, porém não o mais efetivo.
Todos esses métodos buscam resolver o problema dos deadlocks, porém somente os três primeiros apenas evidenciam a complexidade do problema e na prática deixam muito a desejar. Boa parte dos sistemas operacionais acabam optando pela última opção e simplesmente optam por ignorar o problema, não querendo pagar o alto preço (por exemplo, restrições inconvenientes ao uso dos recursos do sistema) pela sua eliminação.
 
Exemplos de Deadlock.
Nos sistemas de computadores existem diversos recursos que se adéquam ao uso de somente um processo a cada vez, com isso caso dois ou mais processos quiserem acessar um recurso simultaneamente, haverá um impasse, o que é bem comum de se acontecer:
Impressora: Dois processos enviam ao mesmo tempo arquivos para uma impressora, porém a mesma está sem papel, mesmo que ela tenha um processo de gerenciamento correto de fila, enquando a situação do papel não for resolvida os provessos vão continuar parados e em Deadlock.
Drive de CD: Dois processos querem gravar em CD um documento obtido pelo scanner. O processo A está usando o scanner, enquanto o processo B, que é programado diferentemente, está usando o gravador de CD. Então, o processo A pede para usar o gravador de CD, mas a solicitação é negada até que o processo B o libere. Porém, ao invés de liberar o gravador de CD, o processo B pede para usar o scanner. Nesse momento, ambos os processos ficam bloqueados e assim ficarão para sempre
Espera Circular - dois processos diferentes (A e B), cada um com um recurso diferente alocado (R1 e R2). Nesse exemplo clássico de deadlock, é facilmente visível a condição de espera circular em que os processos se encontram, onde cada um solicita o recurso que está alocado ao outro processo.
Cruzamento – Em uma avenida onde existe um cruzamento , caso os faróis abram simultaneamente , os carros vão seguir em direção ao destino porém vai haver um encontro de frente a frente entre eles , o que irá ocasionar um Deadlock no Trânsito.
Deadlock em Banco de Dados
Assim como toda aplicação, os bancos de dados também estão suscetíveis a ocorrência de deadlock, porém o mecanismo de banco de dados do SQL Server detecta ciclos de deadlock automaticamente dentro do SQL Server, o mecanismo de Banco de Dados escolhe uma das sessões como vítima de deadlock e a transação atual é encerrada com um erro para quebrar o deadlock. As causas de se ocorrer deadlock em banco de dados são as mesma de se ocorrer em qualquer outra aplicação seja em um programa em Java ou um jogo com processamento gráfico pesado, pois em todos os casos existes processos ou threads (partes de um processo) que podem entrar em colapso e acarretar em um deadlock.
Para o caso de um banco de dados, um deadlock é provocado normalmente havendo transações, e envolvendo travas exclusivas. Travas exclusivas normalmente aparecem em operações de modificação:
Suponhaduas transações, A e B. A precisa modificar as mesmas tabelas que B, mas B já pediu trava exclusiva em alguma das tabelas que A precisa modificar. O resultado é que A pode pedir trava exclusiva em outras tabelas que B também irá utilizar, resultando no deadlock.
O próprio banco de dados possui alguns mecanismos internos para evitar deadlock, mas o mecanismo não é infalível e normalmente demanda ações do usuário.
– Sinalizadores de Rastreamento em Banco de Dados.
Referencias Bibliográficas
TECHNET. Detectando e encerrando deadlocks. 2015. Disponível em: <https://technet.microsoft.com/pt-br/library/ms178104(v=sql.105).aspx>. Acesso em: 20 abr. 2017.
PEREIRA, William. O que é deadlock no SQL Server? 2015. Disponível em: <https://pt.stackoverflow.com/questions/64484/o-que-é-deadlock-no-sql-server/64492>. Acesso em: 20 abr. 2017.
WIKIPÉDIA. Deadlock. 2016. Disponível em: <https://pt.wikipedia.org/wiki/Deadlock>. Acesso em: 20 abr. 2017.
NOVATO, Douglas. Sistemas Operacionais - O que é Deadlock? 2014. Disponível em: <https://www.oficinadanet.com.br/post/12786-sistemas-operacionais-o-que-e-deadlock>. Acesso em: 20 abr. 2017.

Outros materiais