Alocacao de recursos e tratamento de deadlocks
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 do que 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 recursos disponí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 em