Estudos diciplinares
Segundo ao autor Binh Nguyen O deadlock acontece quando dois ou mais processos são incapazes de continuar porque cada um está esperando por um dos outros para fazer alguma coisa, um exemplo comum é um programa de comunicação para um servidor, que pode encontrar-se aguardando a saída do servidor antes de enviar qualquer coisa mais do que isso, enquanto o servidor esta igualmente a espera de mais entrada do programa de controle antes de emitir qualquer coisa.
O deadlock ocorre com um conjunto de processos e recursos nãopreemptí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. O deadlock pode ocorrer mesmo que haja somente um processo no SO, 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 . Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memória etc. Apesar da CPU também ser um recurso para o SO, em geral é um recurso facilmente preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa.
Tratamento de deadlocks
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, as estratégias usadas para detectar e tratar as situações de deadlocks gera 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;
Tanto em Linux como em Windows o método de tratamento de