Processos em Deadlock
O artigo “Deadlock” de Lopes [1] apresentou, ao meu ponto de vista, explicações interessantes sobre o que vem a ser deadlock e suas formas de tratamento.
Em parte de seu artigo a autora diz:
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.
(Lopes, 2008)
Contudo, além da introdução, gostaria de ressaltar o paragrafo em que Lopes cita estratégias de prevenção de deadlock.
Para área de programação é essencial que se conheça bem as estratégias que serão citadas aqui, para que assim se evite este tipo de problema.
Nem sempre será possível evitar o deadlock, porém, o sistema obrigatoriamente deverá ser capaz de decidir se é seguro liberar um recurso ou não. O que acontece é que há formas para que se evite pelo menos uma das condições para situação de deadlock.
Sabendo que para que se ocorra deadlock, é necessário que quatro condições sejam satisfeitas, são elas: Condição de Exclusão Mútua (solicitação de utilização do recurso de forma exclusiva), Condição de Posse e Espera (quando o processo possuir o recurso, porém continuar esperando por outro recurso), Condição de Não-Preempção (recursos já alocados não podem ser tomados à força) e Condição de Espera Circular (quando ocorrer uma cadeia circular de dois ou mais processos, cada um esperando por um recurso