A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Operacionais

Apresentações semelhantes


Apresentação em tema: "Sistemas Operacionais"— Transcrição da apresentação:

1 Sistemas Operacionais

2 Deadlocks

3 Métodos para Manipulação
Deadlocks Problema Modelo do Sistema Caracterização Métodos para Manipulação Prevenção Evitar Detecção Recuperação

4 Devenvolver uma descrição de deadlocks,
Objetivos Devenvolver uma descrição de deadlocks, os quais impedem que conjuntos de processos concorrentes completem suas tarefas Apresentar diferentes métodos para prevenir ou evitar deadlocks em um sistema computacional

5 Exemplo: semáforos A e B, iniciados com 1
O Problema de Deadlocks Conjunto de processos bloqueados cada um mantendo um recurso e esperando para adquirir um recurso, mantido por um outro processo no conjunto Exemplo: Sistema com 2 disk drives P1 e P2 cada um mantendo um disk drive e cada um necessitando de um outro Exemplo: semáforos A e B, iniciados com 1 P0 P1 wait (A); wait(B) wait (B); wait(A)

6 Exemplo para Atravessar uma Ponte
Tréfego somente em uma direção Cada seção da ponte pode ser vista como um recurso Se ocorre deadlock, pode ser resolvido se um carro voltar (preempção de recursos e rollback) Diversos carros podem ter que voltar se ocorre deadlock Pode causar starvation

7 Modelo do Sistema Tipos de recursos R1, R2, . . ., Rm
CPU cycles, memory space, I/O devices Cada tipo de recurso Ri tem Wi instâncias Cada processo utiliza um recurso da seguinte forma: pedido uso liberação

8 Mutual exclusion: somente um processo de cada vez pode usar um recurso
Caracterização de Deadlock Deadlock ocorre se e somente se quatro condições se mantiverem simultaneamente Mutual exclusion: somente um processo de cada vez pode usar um recurso Hold and wait: um processo mantendo pelo menos um recurso e está esperando para adquirir recursos adicionais mantidos por outros processos

9 Caracterização de Deadlock
No preemption: um recurso só pode ser liberado voluntariamente pelo processo que o mantém, após o processo completar a sua tarefa Circular wait: existe um conjunto {P0, P1, …, P0} de processos esperando, tal que P0 está esperando por um recurso que está atribuído P1, P1 está esperando por um recurso que está atribuído a P2, …, Pn–1 está esperando por um recurso que está atribuído Pn, e Pn está esperando por um recurso que está atribuído a P0

10 Grafo de Alocação de Recursos
Grafo : um conjunto de vértices V e um conjunto de arestas E V está particionado em dois tipos: P = {P1, P2, …, Pn}, o conjunto de todos os processos no sistema R = {R1, R2, …, Rm}, o conjunto de todos os tipos de recursos no sistema aresta de pedido – aresta direcionada P1  Rj aresta de atribuição – aresta direcionada Rj  Pi

11 Grafo de Alocação de Recursos
Processo Tipo de recurso com 4 instâncias Pi solicita instância de Rj Pi está mantendo uma instância de Rj Pi Rj Pi Rj

12 Exemplo de um Grafo de Alocação de Recursos

13 Grafo de Alocação de Recursos com Deadlock

14 Grafo de Alocação de Recursos com Ciclo sem Deadlock

15 Fatos Básicos Grafo não contém ciclos  não há deadlock
contém um ciclo  se houver somente uma instância por tipo de recurso, então ocorre deadlock diversas instâncias por tipo de recurso, então pode correr deadlock

16 Métodos de Manipulação de Deadlock
Garante que o sistema nunca entra num estado de deadlock Permite que o sistema entre num estado de deadlock e então recupera Ignora o problema e pretende que deadlocks nunca ocorram no sistema; usado por muitos sistemas operacionais, incluindo o UNIX

17 Prevenção de Deadlock Mutual Exclusion –
não é necessária para recursos compartilháveis deve se manter para recursos que não podem ser compartilhados

18 Prevenção de Deadlock Hold and Wait – deve guarantir que sempre que um processo solicite um recurso, ele não mantém qualquer outro recurso Exige que os processos solicitem e sejam alocados todos os seus recursos antes de iniciar a execução, ou permite que o processo solicite recursos somente quando não tenha nenhum outro Baixa utilização de recursos; possibilita starvation

19 Prevenção de Deadlock No Preemption –
Se um processo que está mantendo alguns recursos e solicita um outro recurso que não pode ser imediatamente alocado  todos os recursos que ele mantém devem ser liberados Recursos com preempção são adicionados a lista de recursos do processo que está esperando Processo serão reiniciados somente quando ele puder recuperar seus recursos anteriores, além dos novos que está solicitando

20 Prevenção de Deadlock Circular Wait –
impõe uma ordenação total de todos os tipos de recursos requer que cada processo solicite recursos em uma ordem crescente de enumeração

21 Evitar Deadlock Requer que o sistema tenha alguma informação adicional disponível a priori Modelo mais simples e útil requer que cada processo declare o número máximo de recursos de cada tipo que pode precisar Algoritmo de deadlock-avoidance examina dinamicamente o estado de alocação de recursos para garantir que nunca ocorra um condição de espera circular (circular-wait)

22 Estado de alocação de recursos é definido
Evitar Deadlock Estado de alocação de recursos é definido pelo número de recursos disponíveis e alocados demanda máxima dos processos

23 Estado Seguro Quando um processo solicita um recurso disponível, o sistema deve decidir se com a alocação imediata deste recurso, o sistema permanece em um estado seguro O sistema está em um estado seguro se exite uma seqüência <P0, P2, …, Pn> de todos os processos o sistema é tal que para cada Pi, o recurso que Pi ainda pode solicitar e pode ser satisfeito pelos recursos correntemente disponíveis + recursos mantido por todos os Pj, com j < i

24 Estado Seguro Isto é: Se Pi necessita de recursos que não estão disponíveis imediatamente, então Pi pode esperar até que todos Pj tenham teminado Quando Pj termina, Pi pode obter os recursos necessários, executar, retornar os recursos alocados e terminar Quando Pi termina, Pi +1 pode obter seus recursos necessários, e assim por diante.

25 Evitar  garante que um sistema nunca entrará em um estado inseguro
Fatos Básicos Se um sistema está num estado seguro  não ocorre deadlocks estado inseguro  pode ocorrer deadlock Evitar  garante que um sistema nunca entrará em um estado inseguro

26 Algoritmos Avoidance Única instânica de um tipo de recurso usar
 um grafo de alocação de recurso Múltiplas instâncias de um tipo de recurso  o banker’s algorithm

27 Recursos devem ser declarados no sistema a priori
Esquema do Grafo de Alocação de Recursos Aresta de demanda (claim edge) Pi  Rj indica que processo Pj pode solicitar o recurso Rj; representado por uma linha tracejada Claim edge converte para aresta de pedido (request edge) quando um processo solicita um recurso Aresta de pedido converte para aresta de atribuição (assignment edge) quando o recurso é alocado ao processo Quando um recurso é liberado por um processo, a aresta de atribuição se converte para uma claim edge Recursos devem ser declarados no sistema a priori

28 Grafo de Alocação de Recursos

29 Grafo de Alocação de Recursos em Estado Inseguro

30 Suponha que o processo Pi solicite um recurso Rj
Algoritmo do Grafo de Alocação de Recursos Suponha que o processo Pi solicite um recurso Rj O pedido pode ser garantido somente se a conversão da aresta de pedido (request edge) para aresta de atribuição (assignment edge) não resulta numa formação de um ciclo no grafo de alocação de recursos

31 Banker´s Algorithm Mútiplas instâncias
Cada processo deve a priori declarar a sua demanda de uso máxima Quando um processo solicita um recurso ele pode ter que esperar Quando um processo consegue todos os seus recursos, ele deve liberá-los numa quantidade de tempo finita

32 Estrutura de Dados: Banker´s Algorithm
Suponha n = número de processos, m = número de tipos de recursos Available: Vetor de tamanho m. Se Available [j] = k, existem k instâncias dos recursos do tipo Rj disponíveis Max: matriz n x m. Se Max [i,j] = k, então processo Pi pode pedir até k instâncias do recurso do tipo Rj

33 Estrutura de Dados: Banker´s Algorithm
Allocation: matriz n x m. Se Allocation[i,j] = k então Pi está alocando k instâncias de Rj Need: matriz n x m. Se Need[i,j] = k, então Pi pode necessitar de mais k instâncias de Rj para terminar sua tarefa Need [i,j] = Max[i,j] – Allocation [i,j]

34 Algoritmo Seguro 1. Deixe Work e Finish serem vetores de tamanho m e n, respectivamente. Inicie: Work = Available Finish [i] = false for i = 0, 1, …, n- 1 2. Encontre um i tal que ambos: (a) Finish [i] = false (b) Needi  Work Se não existe tal i, vá para o passo 4 3. Work = Work + Allocationi Finish[i] = true vá para o passo 2 4. Se Finish [i] == true tara todo i, então o sistema está em um estado seguro

35 Algoritmo de Pedido de Recurso por Processo Pi
Request = vetor de pedido para o processo Pi. If Requesti [j]=k então processo Pi quer k instâncias do recurso de tipo Rj 1. Se Requesti  Needi vá para o passo 2. Caso contrário, raise error condição de erro, uma vez que o processo excedeu sua demanda máxima 2. Se Requesti  Available, vá para o passo 3. Caso contrário Pi deve esperar, uma vez que os recursos não estão disponíveis

36 Algoritmo de Pedido de Recurso por Processo Pi
3. Pretende alocar recursos pedidos para Pi modificando o estado da seguinte forma: Available = Available – Request; Allocationi = Allocationi + Requesti; Needi = Needi – Requesti; Se safe  os recursos são alocados a Pi Se unsafe  Pi deve esperar e o estado de alocação antigo é restaurado

37 Exemplo do Algoritmo do Banqueiro
5 Processos P0 até P4; 3 tipos de recursos: A (10), B (5), e C (7) instâncias Snapshot do tempo T0: Allocation Max Available A B C A B C A B C P P P P P

38 O conteúdo da matriz Need é definido como Max–Allocation
Exemplo do Algoritmo do Banqueiro O conteúdo da matriz Need é definido como Max–Allocation Need A B C P P P P P O sistema está em um estado seguro, porque a seqüência < P1, P3, P4, P2, P0> satisfais o critério de segurança

39 Exemplo: Pi solicita (1,0,2)
Verfique que Request  Available (que é, (1,0,2)  (3,3,2)  true) Allocation Need Available A B C A B C A B C P P P P P

40 Exemplo: Pi solicita (1,0,2)
Execução do algoritmo de segurança mostra que a seqüência < P1, P3, P4, P0, P2> satisfais a necessidade de segurança O pedido para (3,3,0) pelo P4 pode ser garantido? O pedido para (0,2,0) pelo P0 pode ser garantido?

41 Detecção de Deadlock Permite ao sistema entrar num estado de deadlock
Algoritmo de Deteção Esquema de Recuperação

42 Única Instância para Cada Tipo de Recurso
Mantém grafo wait-for Nós são processos Pi  Pj se Pi está esperando por Pj Periodicamente invoca um algoritmo que busca por um ciclo no grafo. Se existe um ciclo, existe deadlock Um algoritmo para detectar um ciclo em um grafo requer operações da ordem de n2, onde n é o número de vértices no grafo

43 Resource-Allocation Graph Corresponding Wait-For Graph
Grafo de Alocação de Recurso e Grafo Wait-For Resource-Allocation Graph Corresponding Wait-For Graph

44 Diversas Instâncias de um Tipo de Recurso
Available: Um vetor de tamanho m indica o número de recursos disponíveis de cada tipo Allocation: Uma matriz n x m define o número de recursos de cada tipo correntemente alocado para cada processo Request: Uma matriz n x m indica o pedido corrente de cada processo. Se Request [ij] = k, então o processo Pi está pedindo mais k instâncias do tipo de recurso Rj

45 2. Encontre um índice i tal que ambos:
Algoritmo de Detecção 1. Deixe Work e Finish serem vetores de tamanho m e n, respectivamente. Inicie: (a) Work = Available (b) For i = 1,2, …, n, if Allocationi  0, then Finish[i] = false;otherwise, Finish[i] = true 2. Encontre um índice i tal que ambos: (a) Finish[i] == false (b) Requesti  Work Se tal i não existe, vá para o passo 4

46 3. Work = Work + Allocationi Finish[i] = true vá para o passo 2
Algoritmo de Detecção 3. Work = Work + Allocationi Finish[i] = true vá para o passo 2 4. Se Finish[i] == false, para algum i, 1  i  n, então o sistema está num estado de deadlock. Além disso, se Finish[i] == false, então Pi está em deadlock Algoritmo requer operações da ordem de O(m x n2) para detectar se o sistema está em estado de deadlocked

47 Allocation Request Available
Exemplo do Algoritmo de Detecção 5 processos P0 até P4; 3 tipo de recursos A (7), B (2), e C (6) instâncias Snapshot no tempo T0: Allocation Request Available A B C A B C A B C P P P P P Seqüência <P0, P2, P3, P1, P4> resultará em Finish[i] = true para todo i

48 P2 pede uma instância adicional do tipo C
Exemplo do Algoritmo de Detecção P2 pede uma instância adicional do tipo C Request A B C P P P P P

49 Exemplo do Algoritmo de Detecção
Estado do sistema? Pode demandar recurso mantido pelo processo P0, mas recursos insuficientes se ajustam a outros processos; pedidos. Deadlock existe, consistindo dos processos P1, P2, P3, e P4

50 Quando e quantas vezes, invocar depende de:
Uso do Algoritmo de Detecção Quando e quantas vezes, invocar depende de: Quantas vezes é provável que ocorra deadlock ? Quantos processos necessitarão ter a sua execução retornada para determinado ponto (rolled back)? um por cada ciclo disjunto Se o algoritmo de detecção é invocado arbitrariamente, pode haver muitos ciclos no grafo de recursos e então não seriam capazes de dizer quais dos muitos processos em deadlock causaram o deadlock

51 Recuperação de Deadlock: Processo de Terminação
Abortar todos os processos em deadlock Abortar um processo de cada vez até o ciclo de deadlock ser eliminado Em que ordem escolheríamos abortar? Prioridade do processo Quanto tempo o processo computou, e quanto tempo mais falta para terminar Recursos usados pelo processo Recursos necessários para completar o processo Quantos processos necessitam ser terminados O process é interativo ou batch?

52 Seleção de uma vítima – minimiza o custo
Recuperação de Deadlock: Preempção de Recursos Seleção de uma vítima – minimiza o custo Rollback – returna para algum estado seguro, reinicia processo naquele estado Starvation – algum processo pode sempre ser escolhido como vítima, incluir número de rollbacks no fator de custo


Carregar ppt "Sistemas Operacionais"

Apresentações semelhantes


Anúncios Google