Existem três
maneiras das quais podemos lidar com o problema do deadlock:
- Pode ser usado um protocolo para prevenir as
ocorrências de deadlock, garantindo que o sistema nunca se encontre em
estado de deadlock.
- A ocorrência de deadlock pode ser permita
através do sistema, mas assim que o mesmo detecta-la deve ser executada
uma recuperação.
- Existe também a possibilidade de fingir que o
sistema está livre de deadlocks e que nunca terá problemas com isso.
A terceira solução é usada na maioria dos sistemas operacionais, em
casos como esse é responsabilidade do desenvolvedor de aplicações escrever
programas que manipulem deadlocks.
Para impedir a
ocorrencia de deadlocks um sistema pode utilizar um esquema de prevenção, o
mesmo fornece um conjunto de métodos para garantir que pelos menos uma das
quatro condições necessárias para haver um deadlock não seja satisfeita. Esses
métodos restringem as formas pelas quais a solicitação de recursos é feita.
O
impedimento de deadlocks requer que o sistema operacional receba informações
antecipadamente, a que recursos um processo solicitará e usará durante seu
tempo de vida. Através desse recurso adicional, o sistema operacional pode
decidir se para determinada solicitação o processo deve esperar ou não. Para
definir se uma solicitação de um recurso pode entrar em espera ou não o sistema
deve analisar os recursos disponíveis no momento, os recursos ocupados, e as
futuras solicitações e liberação de processos.
Se um algoritmo de
prevenção de deadlock ou de impedimento não for adicionado ao sistema, uma
situação de deadlock pode ocorrer.
Na ausência de algoritmos de detecção e recuperação
de deadlocks, o sistema não será capaz de detectar o que ocorreu, em um caso
como esse um deadlock não detectado resultará em diminuição do desempenho do
sistema. Isso ocorre devido os recursos estarem sendo mantidos por processos
que não podem ser executados, de modo que o sistema irá parar de funcionar até
que seja reiniciado manualmente.
Mesmo que esse
método não esteja associado a uma abordagem viável ao problema de deadlock, ele
é usado na maioria dos sistemas operacionais. Esse método é mais barato do que
os de prevenção, impedimento ou detecção e recuperação que devem ser usados
constantemente. Como os deadlocks em um sistema não são frequentes, um sistema
pode entrar em estado de paralisação sem que esteja em estado de deadlock.
Nenhum comentário:
Postar um comentário