segunda-feira, 29 de abril de 2013

Impedimento de Deadlocks

Os algoritmos de prevenção de deadlock previnem  a ocorrência de deadlocks restringindo como as solicitações são feitas. Essas restrições garantem que  pelos menos uma das condições necessárias para se estabelecer o deadlock não se cumpra. Os possíveis efeitos colaterais podem ser a baixa utilização de dispositivos e uma reduzida taxa de transferência no sistema.
Outro método para evitar deadlocks é demandar mais informações sobre os recursos que serão solicitados. Com esse conhecimento da sequência completa de solicitações pode se tomar a decisão se o processo deve ou não esperar. Para que o sistema faça isso ele precisa de um mapeamento completo para saber quais recursos estão sendo ocupados, se estiverem ocupados informar qual processo os ocupa e também quais recursos estão livres.
Existem vários algoritmos que tratam esse método, o modelo mais simples e útil requer que cada processo declare a quantidade máxima de recursos que ele pode ocupar de cada tipo. Com essa informação já é possível que através de um algoritmo possa se garantir que a condição de espera circular não se estabeleça impedindo assim que se estabeleça um deadlock. O estado da alocação de recursos é definido através da quantidade de recursos disponíveis e alocados pelas demandas máximas dos processos.

Estado de Segurança

Um estado é seguro quando o sistema pode alocar recursos, em alguma ordem e evitar deadlock. O sistema se encontra em segurança somente se existir uma sequência de segurança. Um estado inseguro é um estado de deadlock, mas nem todos os estados inseguros são deadlocks. Enquanto o estado for seguro o sistema pode evitar estados inseguros. Através do comportamento dos processos é controlado os estados inseguros. Um sistema pode passar de um estado seguro para um estado inseguro.
Através de algoritmos de impedimento de deadlocks é necessário garantir que o sistema sempre esteja em estado seguro. Sempre que um recurso for solicitado o sistema deve analisar e verificar se o processo deve esperar ou ocupar o recurso. A solicitação do processo só é atendida se a alocação deixa o sistema em estado seguro.Mas dessa forma a utilização de recursos pode ser baixa por causa das restrições, um processo pode ficar esperando muito tempo para receber um determinado recurso, isso não ocorreria em uma situação oposta.

Algoritmo do Grafo de Alocação de Recursos

O sistema deve ter alocação de recursos com apenas uma instância de cada tipo de recurso, através do mesmo todos os recursos devem ser solicitados a priori do sistema. Uma aresta de requisição indica que o processo Pi pode solicitar o recurso Rj em algum momento no futuro, quando o processo solicita o recurso essa aresta de requisição é convertida em uma aresta de solicitação. Antes de atender qualquer requisição verifica-se se ao inverter a aresta cria-se um ciclo, esse ciclo é considerado um estado inseguro assim o processo é interrompido temporariamente. Se não existir ciclo o estado é seguro então a solicitação pode ser atendida. 

Algoritmo do Banqueiro

Esse nome foi escolhido pois poderia ser usado em um sistema bancário para garantir que o banco nunca alocasse seu dinheiro disponível de tal modo que não pudesse mais satisfazer as necessidades de todos os seu clientes. 
Quando um novo processo entra no sistema ele deve declarar a quantidade máxima de instâncias de cada tipo de recurso de que ele pode precisar. Essa quantidade não pode exceder a capacidade máxima do sistema.   Quando um processo solicitar recursos o sistema fará a análise se ele estiver em estado seguro ele aloca os recursos para determinado processo caso contrário o processo deve esperar.
Várias estruturas de dados devem ser mantidas para implementar o algoritmo do banqueiro, um vetor de um determinado tamanho indica a quantidade de recursos disponíveis de cada tipo, uma matriz define a demanda máxima de cada processo, a alocação de cada tipo correntemente alocada a cada processo, e também a necessidade de recursos remanescentes a cada processo.


Nenhum comentário:

Postar um comentário