domingo, 2 de junho de 2013

DeadLocks

O QUE É?

No contexto de Sistemas Operacionais, Deadlock pode ser definido como uma situação onde ocorre um impasse, onde dois ou mais processos ficam impedidos de continuar suas execuções.


EXEMPLO DE CRUZAMENTO DE PONTE

·  Tráfego apenas em uma direção.
·  Cada seção de uma ponte pode ser vista como um recurso.
· Se houver deadlock, ele pode ser resolvido se um carro parar (apropriar recursos e reverter).
·  Vários carros podem ter que parar se houver um deadlock.


001.jpg


COMO?

O Processo A fica bloqueado pelo sistema operacional esperando por dados do processo B, ao mesmo tempo o processo B também fica bloqueado, esperando por dados do processo.


CARACTERIZAÇÃO DO DEADLOCK

Deadlock pode surgir se quatro condições mantidas simultaneamente:
Exclusão mútua: apenas um processo de cada vez pode usar um recurso.
Manter e esperar: um processo mantendo pelo menos um recurso está esperando para adquirir outros recursos mantidos por outros processos.
Não preempção: um recurso só pode ser liberado voluntariamente pelo processo que o mantém, depois que esse processo tiver terminado sua tarefa.
Espera circular:  existe um conjunto {P0, P1, …, P0} de processos esperando tal que P0 está esperando por um recurso que é mantido por P1, P1 está esperando por um recurso que é mantido por P2, …, Pn–1 está esperando por um recurso que é mantido por Pn, e P0 está esperando por um recurso que é mantido por P0.


GRAFO DE ALOCAÇÃO DE RECURSOS

Um conjunto de vértices V e um conjunto de arestas E.
V é particionado em dois tipos:
 P = {P1, P2,…, Pn}, o conjunto consistindo em todos os processos no sistema.
R = {R1, R2,…, Rm}, o conjunto consistindo em todos os tipos de recurso no sistema.
Aresta de requisição – aresta direcionada P1 → Rj
Aresta de atribuição – aresta direcionada Rj → P
0003.jpg


EXEMPLO DE UM GRAFO DE ALOCAÇÃO DE RECURSO

003.jpg

  
GRAFO DE ALOCAÇÃO DE RECURSO COM UM DEADLOCK

004.jpg


GRAFO COM UM CICLO, MAS SEM DEADLOCK
005.jpg


FATOS BÁSICOS

Se o grafo não contém ciclos ⇒ sem deadlock.
Se o grafo contém um ciclo ⇒ se apenas uma instância por tipo de recurso, então deadlock.
 se várias instâncias por tipo de recurso, possibilidade de deadlock.


MÉTODOS PARA TRATAMENTO DE DEADLOCKS

Garantir que o sistema nunca entrará em um estado de deadlock.
Permitir que o sistema entre em um estado de deadlock e depois se recupere.
Ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema; usado pela maioria dos sistemas operacionais, incluindo UNIX.


PREVENÇÃO DE DEADLOCK

· Limite as formas como a requisição pode ser feita.
· Exclusão mútua – não exigido para recursos compartilháveis; deve manter para recursos não compartilháveis.
· Manter e esperar – deve garantir que sempre que um processo solicita um recurso, ele não mantém quaisquer outros recursos.
  -Exige que o processo solicite e tenha todos os seus recursos alocados antes de iniciar a execução, ou permite que o processo solicite recursos somente quando o processo não tiver recursos.
   -Baixa utilização de recursos; starvation possível.
·   Sem preempção
  -Se um processo que está mantendo alguns recursos solicitar outro recurso que não pode ser alocado imediatamente a ele, então todos os recursos atualmente sendo mantidos são liberados.
  -Recursos preempatados são acrescentados à lista de   recursos pelos quais o processo está esperando.
  -O processo só será reiniciado quando puder obter seus antigos recursos, além dos novos que está solicitando.
· Espera circular – impõe uma ordenação total de todos os tipos de recurso, e exige que cada processo solicite recursos em uma ordem de enumeração aumentada.


EVITANDO DEADLOCK

· Exige que o sistema tenha alguma informação adicional à prioridade.
· Modelo mais simples e mais útil exige que cada processo declare o número máximo de recursos de cada tipo que ele pode precisar.
· O algoritmo para evitar impasse examina dinamicamente o estado de alocação de recurso para garantir que nunca poderá haver uma condição de espera circular.
· O estado de alocação de recurso é definido pelo número de recursos disponíveis e alocados, e as demandas máximas dos processos.


DETECÇÃO DE DEADLOCK

· Permita que o sistema entre no estado de deadlock;
· Algoritmo de detecção;
· Esquema de recuperação.


ÚNICA INSTÂNCIA DE CADA TIPO DE RECURSO

· Manter grafo de espera
· Nós são processos.
· Pi → Pj   se Pi estiver esperando por Pj.
· Periodicamente, chame um algoritmo que procure um ciclo no grafo. Se houver um ciclo, existe um deadlock.
· Um algoritmo para detectar um ciclo em um grafo requer uma ordem de n2 operações, onde n é o número de vértices no grafo.


GRAFO DE ALOCAÇÃO DE RECURSO E GRÁFICO DE ESPERA

006.jpg


VÁRIAS INSTÂNCIAS DE UM TIPO DE RECURSO

· Disponível: Um vetor de tamanho m indica o número de recursos de cada tipo.
· Alocação: Uma matriz n x m define o número de recursos de cada tipo atualmente alocados a cada processo.
· Requisição: Uma matriz n x m indica a requisição atual de cada processo. Se requisição [ij] = k, então o processo Pi está requisitando k mais instâncias do tipo de recurso Rj.


EXEMPLO DE ALGORITMO DE DETECÇÃO

Cinco processos de P0 a P4; três tipos de recurso A (7 instâncias), B (2 instâncias) e    C (6 instâncias). Instantâneo no instante T0:

              Alocação       Requisição      Disponível
                A B C            A B C               A B C
P0            0 1 0               0 0 0                 0 0 0
P1            2 0 0               2 0 2
P2            3 0 3               0 0 0
P3            2 1 1               1 0 0

P4            0 0 2               0 0 2

REFERÊNCIAS
- Pendente

Alunos: Daniéla Barrachi, Isaque Bassi e Angélica Brentan
 

Nenhum comentário:

Postar um comentário