segunda-feira, 29 de abril de 2013

Métodos para Manipulação de Deadlocks

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