Sistemas Operacionais

Slides:



Advertisements
Apresentações semelhantes
Deadlocks Professora: Lúcia Drummond. Deadlocks Recursos: hardware ou informação Preemptivo Não preemptivo Uso do Recurso: 1. Pedido (Request ou Open)
Advertisements

Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Fluxo em Redes Prof. Ricardo R. Santos.
Sistemas Operacionais Gerência de Processador
Métodos para representação de estruturas hierárquicas
Pesquisa em profundidade
Bloqueios partilhados
Deadlocks - Impasses 3.1. Recurso 3.2. Introdução aos deadlocks
Arquitetura de Sistemas Operacionais
Conceitos de Programação Paralela - 2
Capítulo 7: Deadlocks.
Capítulo 4: Estado Global
Algoritmos Distribuídos Professora: Lúcia Drummond
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Recursos Recurso: objeto físico ou abstrato necessário para que uma tarefa seja executada exemplos: tempo de CPU, memória principal, dispositivos de E/S,
Deadlock Marcos José Santana Regina Helena Carlucci Santana
Deadlock SISTEMAS OPERACIONAIS
Capítulo 3 Deadlocks - Impasses 3.1. Recurso
Sistemas Operacionais
Sincronização de Processos (3) Exercícios - Semáforos
Sincronização de Processos (2)
DeadLock Sistemas Operacionais I
Sistemas Operacionais I
Sistemas Operacionais Adriana Vettorazzo
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Sistemas Operacionais
Sistemas Operacionais
Arquitetura de computadores
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Capítulo 7: Deadlocks.
Sistema Operacional Processos
Prof. Alexandre Monteiro Recife
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Sistemas Operacionais Prof. Galvez. PROBLEMA DE SEÇÃO CRITICA.
Capítulo 7: Deadlocks.
SISTEMAS OPERACIONAIS I
SISTEMAS OPERACIONAIS I
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
SISTEMAS OPERACIONAIS I
Escalonamento com prioridades
Bruna Rafaella da Costa Moura Silvana dos Santos Lima
Sistemas Operacionais
Assunto: Transações concorrentes, Disciplina: Banco de dados II, profa. Cristina Paludo Max W. Ourique Ranieri R. Tremea
Busca Combinatorial e Métodos de Heurística
SISTEMAS OPERACIONAIS I
PROGRAMAÇÃO DISTRIBUÍDA Aula 02 Prof. Henrique Mongelli
Sistemas Operacionais
Protocolo de Bloqueios
Recursividade Profs. De Prog2 e Lab2.
Video Capítulo 8: Impasses. Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Modelo de Sistemas n Carcterização de.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Escalonamento de Tarefas com Compartilhamento de Recursos André Luis Meneses Silva.
PostGres - Transacções
Gerenciamento de Processos
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções.
Gerenciamento de Memória Sistemas Recentes
Deadlocks Impasses Vinícius Pádua.
Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina MarquesDEIG
Deadlocks.
Programação Concorrente
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Sistemas Operacionais
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Sistemas Operacionais

Deadlocks

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

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

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)

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

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

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

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

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

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

Exemplo de um Grafo de Alocação de Recursos

Grafo de Alocação de Recursos com Deadlock

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

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

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

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

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

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

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

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)

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

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

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.

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

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

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

Grafo de Alocação de Recursos

Grafo de Alocação de Recursos em Estado Inseguro

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

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

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

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]

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

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

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

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 P0 0 1 0 7 5 3 3 3 2 P1 2 0 0 3 2 2 P2 3 0 2 9 0 2 P3 2 1 1 2 2 2 P4 0 0 2 4 3 3

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 P0 7 4 3 P1 1 2 2 P2 6 0 0 P3 0 1 1 P4 4 3 1 O sistema está em um estado seguro, porque a seqüência < P1, P3, P4, P2, P0> satisfais o critério de segurança

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 P0 0 1 0 7 4 3 2 3 0 P1 3 0 2 0 2 0 P2 3 0 1 6 0 0 P3 2 1 1 0 1 1 P4 0 0 2 4 3 1

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?

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

Ú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

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

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

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

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

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 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 Seqüência <P0, P2, P3, P1, P4> resultará em Finish[i] = true para todo i

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 P0 0 0 0 P1 2 0 1 P2 0 0 1 P3 1 0 0 P4 0 0 2

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

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

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?

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