Alocacao de recursos e tratamento de deadlocks

Disponível somente no TrabalhosFeitos
  • Páginas : 7 (1608 palavras )
  • Download(s) : 0
  • Publicado : 2 de junho de 2011
Ler documento completo
Amostra do texto
Alocação de Recursos

Alocar recursos para múltiplos usuários ou múltiplos processos
executando concorrente ou paralelamente (execução
concorrente X execução paralela).
Em sistemas com múltiplos usuários e processos, é preciso controlar quem vai acessar cada recurso
e reservá-lo, para que outros processos e usuários não interfiram na sua execução.

Deadlock

Deadlock (interbloqueio,blocagem, impasse), no contexto de banco de dados(MS-SQL/MySQL), caracteriza uma situação em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados.
O deadlock ocorre com um conjunto de processos e recursos não-preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo que,por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.
É comum em sites de noticias, onde a atualização é constante e, caso não se tenha uma boa estrutura de código, um processo pode acabar matando outro, deixando o site lento na horá do carregamento.
A definição textual de deadlock normalmente, por ser muito abstrata, é mais difícil de se compreender doque a representação por grafos, que será resumida mais adiante. No entanto, algumas observações são pertinentes:
• O deadlock pode ocorrer mesmo que haja somente um processo no banco de dados, considerando que este processo utilize múltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo;
• O deadlock independe da quantidade de recursosdisponíveis no sistema;

Um exemplo onde erros de deadlock ocorrem é no banco de dados. Suponha que uma empresa tenha vários vendedores e vários pontos de venda/caixas. O vendedor A vendeu 1 relógio e 1 pulseira. O sistema então solicita o travamento do registro da tabela ESTOQUE que contém o total de relógios em estoque e em seguida solicita o travamento do registro que contém o total de pulseiras emestoque. De posse da exclusividade de acesso aos dois registros, ele lê a quantidade de relógios, subtrai 1 e escreve de novo no registro, o mesmo com o registro de pulseiras. Observe, no entanto que existem diversos caixas operando simultaneamente de forma que se algum outro caixa naquele exato instante estiver vendendo uma pulseira, ele ficará aguardando a liberação do registro das pulseiraspara 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 foram vendidos 1 relógio e 1 pulseira e que o outro caixa solicitou o travamento do registro com a quantidade de pulseiras e agora quer o acesso ao de relógios, no entanto o de relógios está travadopara o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e também não consegue acesso ao outro registro que falta para terminar a operação. Isto é um deadlock.
Tratamento de DeadLock
As situações de deadlock podem ser tratadas ou não em um sistema, e cabe aos desenvolvedores avaliar o custo/benefício que essas implementações podem trazer. Normalmente, asestratégias usadas para detectar e tratar as situações de deadlocks geram grande sobrecarga, podendo até causar um dano maior 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:
• Ignorar a situação;
• Detectar o deadlock e recuperar o sistema;
• Evitar o deadlock;

Algoritmo do Avestruz (Ignorar asituação)
A estratégia mais simples para tratamento (ou não) do "deadlock", conhecida como Algoritmo do Avestruz, é simplesmente ignorá-lo. Muitos defendem que a freqüência de ocorrência deste tipo de evento é baixa demais para que seja necessário sobrecarregar o processamento com códigos extras de tratamento, e que, ocasionalmente, é tolerável reiniciar o sistema/banco como uma ação corretiva....
tracking img