Capítulo 6 Deadlocks. Não encontre defeitos, encontre soluções. Qualquer um sabe queixar-se. Henry Ford

Documentos relacionados
SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Programação Concorrente. 2º Semestre 2010

SSC0640 Sistemas Operacionais I

Capítulo 7: Impasse (Deadlocks( Deadlocks)

Sistemas Operacionais

Deadlocks (impasses)

Sistemas Operacionais. Deadlock

MAC422/5753 Sistemas Operacionais

DEADLOCKS IMPASSES. Vinícius Pádua

Capítulo 3 Deadlocks - Impasses

SOP - TADS Impasses - Deadlock

Sistemas Distribuídos

Capítulo 7: Deadlocks. Operating System Concepts 8th Edition

Recursos. Exemplos de recursos:

Sistemas Operacionais Bloqueios Perpétuos

Capítulo 3 Deadlocks - Impasses

Sistemas Operacionais Aula 09: Deadlocks / Impasses. Ezequiel R. Zorzal

Capítulo 3 Programação Concorrente. Nunca encontrei um homem tão ignorante que eu não pudesse aprender algo com ele.

Impasses. Pedro Cruz. EEL770 Sistemas Operacionais

SISTEMAS OPERACIONAIS

Sistemas Operacionais. DeadLock. Edeyson Andrade Gomes.

Capítulo 3. Deadlocks. Recursos

Impasses. Pedro Cruz. EEL770 Sistemas Operacionais

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais: Deadlocks

Fundamentos de Sistemas Operacionais

Deadlock. Um problema de concorrência. Parte dos slides: Sistemas Operacionais Modernos 2ª Edição, Pearson Education

SSC0640 Sistemas Operacionais I

Deadlocks. Sistemas Operacionais - Professor Machado

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO IM DCC CURSO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I 2010/2 PROGRAMA DA DISCIPLINA

Aula 9. Deadlocks. Caracterização Grafo de dependência Métodos de tratamento Detecção Recuperação. Universidade Federal de Minas Gerais

Sistemas de Informação. Sistemas Operacionais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos. Adão de Melo Neto

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS. SEMANAS 11 e 12

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Algoritmos Distribuídos (deadlock) ALGORITMOS DISTRIBUÍDOS Deadlock. Algoritmos Distribuídos (deadlock) Algoritmos Distribuídos (deadlock)

Engenharia de Computação MATRIZ 535

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

E S C O L A T É C N I C A E S T A D U A L R E P Ú B L I C A

PLANO DE ENSINO. 1 Objetivos da Disciplina. 2 Ementa do Programa

LICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador

Algoritmos Distribuídos (exclusão mútua) ALGORITMOS DISTRIBUÍDOS Exclusão mútua. Algoritmos Distribuídos (exclusão mútua)

Inversão de prioridades

Sistemas Operacionais

Processos. Conceitos Básicos

Sistemas Operacionais

ALGORITMOS DISTRIBUÍDOS Deadlock

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

GERENCIAMENTO DE TAREFAS. Prof. Me. Hélio Esperidião

Apresentação. Sistemas Operacionais. Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D.

Sistemas de Entrada e Saída

Escalonamento de Processos

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica PLANO DE ENSINO. Revisão 7-17/02/16

Sistemas Distribuídos

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Sistemas de Entrada e Saída

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 09. Escalonadores. Conceito, escalonamento, filas de escalonamento e tipos de escalonadores.

GERENCIAMENTO DE PROCESSOS E MEMÓRIA

Curso: Redes de Computadores

Programação Concorrente Locks

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Programação de Sistemas. Impasse e carência

LISTA DE EXERCÍCIOS 02

Resumo: Sistemas Operacionais Abertos

Sistemas Operacionais

Notas da Aula 8 - Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

Estados dos processos. Infra Estruturas Computacionais. A troca de contexto. Escalonamento de Processos. Escalonamento de Processos

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Revisão Ultima aula [1/2]

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

SO: SISTEMAS OPERACIONAIS Curso: Sistemas de Informação

SOP Sistemas Operacionais Módulo 04: Processo

Sistemas Distribuídos. 7 Coordenação e Acordo. Coordenação e Acordo. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Revisão Ultimas matérias

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Gerência de Processos. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Operacionais. Sistema de entrada e Saída

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Prof. Kleber R. Rovai

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA

Sistemas de Informação. Sistemas Operacionais

Métodos de Sincronização

Sistemas Operacionais. Prof. André Y. Kusumoto

Questões de Múltipla escolha

Sistemas Operacionais. Prof. André Y. Kusumoto

Processos. Escalonamento de Processos

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

Sistemas Operacionais

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Protótipo tipo de um sistema de arquivos para ambiente distribuído

Sistemas Distribuídos Exclusão Mútua. Edeyson Andrade Gomes

GERENCIAMENTO DE MEMÓRIA

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Escalonamento de Processos

Transcrição:

Universidade Federal de Itajubá UNIFEI Instituto de Engenharia de Sistemas e Tecnologias da Informação IESTI CCO 004 Sistemas Operacionais Prof. Edmilson Marmo Moreira 1 Introdução Capítulo 6 Deadlocks Não encontre defeitos, encontre soluções. Qualquer um sabe queixar-se. Henry Ford Sistemas computacionais estão repletos de recursos que somente podem ser utilizados por um processo de cada vez. Exemplos comuns incluem impressoras, tape drives etc. Para muitas aplicações, um processo necessita de acesso exclusivo para diversos recursos. Um processo copiando um arquivo maior que o disco de um tape magnético para um impressora necessita de acesso exclusivo para os dois recursos. Em um sistema com somente um processo, o processo pode simplesmente adquirir acesso para todos os recursos que ele precisa e realizar o seu trabalho. Entretanto, em um sistema multiprogramado, sérios problemas podem acontecer. Supondo, por exemplo, que dois processos desejem imprimir um grande arquivo armazenado em um tape. O processo A requisita permissão para utilizar a impressora e recebe autorização para fazê-lo. O processo B, em seguida, requisita permissão para utilizar o tape drive, e também consegue a permissão. Agora A pede para utilizar o tape drive, mas a requisição é negada até que B libere o recurso. Infelizmente, ao invés de liberar o recurso, B pede para utilizar a impressora. Neste ponto ambos os processos estão bloqueados e irão permanecer assim para sempre. Esta situação é conhecida como Deadlock. 2 Recursos Deadlocks podem ocorrer quando processos recebem acesso exclusivo a dispositivos, arquivos, e assim por diante.

Sistemas Operacionais Notas de Aula Cap. 06-2 Para tornar a discussão sobre deadlock o mais geral possível, os objetos que são obtidos pelos processos serão denominados recursos. Um recurso pode ser um dispositivo de hardware ou uma informação. Os sistemas computacionais possuem diversos tipos de recursos para serem solicitados. Para alguns tipos de recursos, diversas instâncias são permitidas. Quando diversas cópias de um recurso estão disponíveis, qualquer uma delas pode ser utilizada para satisfazer alguma requisição. Resumindo, um recurso é qualquer coisa que somente pode ser utilizado por um único processo em um determinado instante de tempo. Recursos podem ser de dois tipos: preemptivos e não-preemptivos. Recursos preemptivos são aqueles que podem ser retirados dos processos sem causar nenhum prejuízo. Memória é um exemplo de um recurso preemptivo. Considerando, por exemplo, um sistema com 512k de memória disponível para processos usuários, uma impressora, e dois processos de 512k que desejem imprimir ao mesmo tempo. O processo A requisita e obtém a impressora, então inicia o seu processamento. Antes de terminar a computação, ele excede o seu quantum de tempo e interrompido (swapped out). Agora, o processo B executa e tenta, sem sucesso, adquirir a posse da impressora. Potencialmente, existiria uma situação de deadlock, porque A tem a impressora e B possui a memória. Felizmente, é possível retirar o recurso de B (memória) através de um procedimento de swapping, passando o seu espaço de memória para que o processo A continue a sua execução. Como A pode executar, nenhum deadlock ocorre. Um recurso não-preemptível, ao contrário, não pode ser retirado do processo sem causar falhas no processamento. Em geral, deadlocks envolvem recursos não-preemptíveis. Potencialmente, deadlocks que envolvem recursos preemptíveis podem ser resolvidos através da realocação dos recursos para outros processos.

Sistemas Operacionais Notas de Aula Cap. 06-3 3 Deadlocks Um conjunto de processos estão em deadlock se cada processo do conjunto está aguardando por um evento que somente um outro processo do mesmo conjunto pode causar. Condições para que ocorra Deadlock 1. Condição de exclusão mútua: Cada recurso só pode estar associado a um único processo em um determinado instante. 2. Condição de posse e espera: Processo de posse de recursos podem requisitar por novos recursos. 3. Condição de Não-preempção: Recursos previamente garantidos não podem ser retirados de um processo. 4. Condição de Espera Circular: Deve existir uma cadeia circular de 2 ou mais processos, cada um aguardando por recursos que estão alocados para membros da mesma cadeia. Todas essas 4 condições devem estar presentes para que um deadlock ocorra. Se uma dessas quatros condições estiver ausente o deadlock é impossível. Abordagens para o tratamento do Deadlock Existem várias abordagens para o tratamento do deadlocks. Cada abordagem apresenta vantagens e desvantagens, sendo o emprego dependente da característica do sistema. As principais abordagens são: Agoritmo do Avestruz. Prevenção de Deadlock. Impedimento do Deadlock. Detecção do Deadlock. Recuperação do Deadlock.

Sistemas Operacionais Notas de Aula Cap. 06-4 O Algoritmo do Avestruz Essa é uma abordagem simples: Enfie sua cabeça na terra e imagine que nenhum problema está ocorrendo. A principal idéia por detrás desta abordagem é que a probabilidade de ocorrer deadlock (ou a média de ocorrência) em um período relativamente longo for pequena, perdas causadas pelo problema, quando ele ocorrer, serão compensadas pela economia em não ser preciso detectar, impedir ou recuperar. Prevenção do Deadock Para previnir que um deadlock oconteça, basta evitar a ocorrência de qualquer uma das quatro condições necessárias para a existência de deadlock. Entretanto, evitar cada uma das condições impõe um custo muito alto ao sistema. 1. Remoção da Exclusão mútua: Sem dúvida a inexistência de exclusão mútua evita o deadlock, mas a sua ausência pode causar problemas maiores com a condição de disputa. 2. Remoção da Não-preempção: A remoção da não-preempção podde causar problemas de escalonamento e introduzir inconsistências nas atividades diárias. Além disso, pode fazer com que os processos percam dados se não for tomado cuidados extras. Essa solução impõem um alto custo ao sistema. 3. Remoção da Posse e Espera: Existem duas formas de se evitar a posse e espera: i) Forçar o processo a desistir de todos os recursos sempre que ele solicitar mais. Essa situação contradiz a condição de Nãopreempção. ii) Proibir que um processo faça solicitações em instantes diferentes, ou seja, fazer com que ele solicite todos os recursos que irá precisar de um só vez. Neste caso, o processo acabará controlando desnecessariamente alguns

Sistemas Operacionais Notas de Aula Cap. 06-5 recursos por longos períodos de tempo sem realmente usálos, diminuindo a disponibilidade dos recursos. Outro problema é que um processo pode ser adiado indefinidamente se ele precisar do acesso a muitos recursos (starvation). 4. Remoção da Espera Circular: Existem três formas de se evitar a espera circular: i) Rejeitar que processos peçam recursos em instantes diferentes. Essa situação é a mesma comentada na item anterior. ii) iii) Permitir que processos tenham acesso a apenas um recurso de cada vez. Essa solução é impossível de ser alcançada em sistemas de uso geral, pois depende da forma como os processos foram implementados. Forçar os processos a solicitarem recursos em uma determinada ordem. Essa solução impõem um alto custo para o sistema e pode levar os processos a situações de starvation. Impedimento do Deadlock A principal diferença do impedimento e a prevenção é que o impedimento não elimina totalmente o deadlock, pois teoricamente é possível ocorrer uma seqüência infeliz de solicitações. Se o Sistema Operacional perceber que a alocação de um recurso cria riscos de ocorrer deadlock ele nega o acesso evitando assim o problema. A idéia é rejeitar solicitações que criam um potencial para a paralisação. Algoritmo do Banqueiro para um único recurso (Dijkstra) Este algoritmo faz distinção entre estados seguros e estados inseguros. Um estado é seguro quando o sistema operacional pode garantir recursos suficientes para que, mesmo que todos os processos solicitem todos os recursos de que precisam, eles irão terminar sem que ocorra deadlock. Em um estado seguro, o sistema pode sempre evitar a paralisação rejeitando solicitações seletivamente. Um estado é inseguro quando, independentemente da reposta do sistema, os processos podem fazer solicitações que causam deadlock.

Sistemas Operacionais Notas de Aula Cap. 06-6 Um estado inseguro não implica em uma paralisação iminente. Ele indica que o SO não pode garantir que não ocorrerá deadlock. Algoritmo var Seguro : Boolean; Disponivel : integer; begin Seguro := true; {Define L como sendo uma lista temporária de todos os processos ativos } Disponivel := {n. recursos disponíveis}; repeat if {existe um processo em L tal que Disponivel n. recursos não requisitados pelo processo} Then begin {Remove processo da lista L} Disponivel := Disponivel + {n. recursos alocados ao processo removido} end else Seguro := False; until (L = ) or (Not Seguro); end. Algoritmo do Banqueiro para Recursos Múltiplos Este algoritmo é uma generalização do algoritmo anterior. Ele utiliza 3 vetores: E = recursos existentes; P = recursos de posse dos processos; D = recursos disponíveis. E duas matrizes: A = Matriz de recursos X processos (Alocados); R = Matriz de recursos X processos (Requisitados); Algoritmo Passos do Algoritmo:

Sistemas Operacionais Notas de Aula Cap. 06-7 1. Escolher uma linha em R, cujo n. De recursos necessários são todos ao vetor D. Se não existir o sistema poderá entrar em deadlock, ou seja, o estado é inseguro. 2. Assumir que o processo desta linha jã completou a utilização dos recursos: Marcá-lo com terminado; Adicionar todos os recursos alocados ao processo ao vetor D; 3. Repetir os passos 1 e 2 até que todos os processos estejam marcados. Neste caso, o estado seguro foi atingido, caso contrário o estado é inseguro. Exemplo: Supondo a existência de 3 processos e quatro classes de recursos (tape drives, plotters, impressoras e CD-Rom). O processo 1 está de possa de uma impressora. O processo 2 possui dois tape drives e um CD-Rom. O processo 3 possui uma plotter e duas impressoras. Cada processo necessita recursos adicionais, como mostrado pela matriz R. Recursos Existentes Recursos Disponíveis Tape Drives Plotters Impressoras CD - Roms Tape Drives Plotters Impressoras CD - Roms E = (4, 2, 3, 1) D = (2, 1, 0, 0) Matriz de recursos alocados Matriz de recursos Requisitados 0 0 1 0 2 0 0 1 C = 2 0 0 1 R = 1 0 1 0 0 1 2 0 2 1 0 0 Para executar o algoritmo de detecção de deadlock, primeiro é escolhido o processo que pode ter suas solicitações atendidas.

Sistemas Operacionais Notas de Aula Cap. 06-8 O primeiro processo não pode ser satisfeito porque não existe CD-Rom disponível. O segundo também não pode ser atendido, porque não existe impressora livre. Felizmente, o terceiro pode ser atendido. Então o processo 3 executa e eventualmente devolve todos os seus recursos. O vetor D fica, D = (2, 2, 2, 0) Neste ponto o processo 2 pode executar e devolver os seus recursos em seguida. O resultado do vetor D é D = (4, 2, 2, 1) Agora o processo 1 pode executar. Como todos os processos está marcados não existe deadlock no sistema. Realizando uma pequena variação da situação apresentada. Supondo que o processo 2 precisa de um CD Rom e também de 2 tape drives e a plotter. Nenhuma das requisições podem ser atendidas, então o sistema pode entrar em deadlock e o estado é inseguro. Detecção do Deadlock Supondo que se tenha um sistema no qual o deadlock pode ocorrer. Ou seja, não há esquemas para preveni-la ou evitá-la. Em suma, sempre que um processo solicitasse um recurso, o deadlock poderia ocorrer. É preciso responder a duas perguntas: Como o sistema pode detectar uma situação de deadlock? Se o deadlock ocorrer o que o sistema fará? Uma maneira de detectar o deadlock é por meio de um dígrafo de alocação de recursos.

Sistemas Operacionais Notas de Aula Cap. 06-9 Grafo de Alocação de Recursos Os dígrafos podem representar muitos tipos diferentes de informação. De interesse para o estudo dos deadlocks, é o seu uso para representar alocação de recursos. Um dígrafo desses é chamado de Dígrafo de Alocação de Recursos. Em suma, sempre que um processo solicitasse um recurso, o deadlock poderia ocorrer. processo recurso unidade de fita processo A processo B recurso processo Impressora (a) (b) (c) (a)um processo de posse de um recurso (b)um processo aguardando por um recurso (c) Deadlock Exemplo: Considerando um sistema com 7 processos, A, B, C, D, E, F e G; e 6 recursos R, S, T, U, V e W; e com os recursos alocados da seguinte maneira: 1 O processo A detém R e deseja S. 2 O processo B não detém recursos, mas deseja T. 3 O processo C não detém recursos, mas deseja S. 4 O processo D detém U e quer S e T. 5 O processo E detém T e quer V.

Sistemas Operacionais Notas de Aula Cap. 06-10 6 O processo F detém W e quer S. 7 O processo G detém V e quer U. Este sistema está em deadlock? Se estiver, quais processos estão envolvidos? R A B C S D T E F U V W G Processos em Deadlock D T E U V G

Sistemas Operacionais Notas de Aula Cap. 06-11 Detecção de Deadlock com múltiplos recursos de cada tipo Seja o m o número de classes de recursos, com e 1 recursos da classe 1, e 2 recursos da classe 2 e, generalizando, e i recursos da classe i (1 i m). E é o vetor de recursos existentes. Seja D o vetor de recursos disponíveis, com D i informando o número de instâncias do recurso i atualmente disponíveis. São necessárias duas matrizes: C = Matriz de recursos alocados correntemente; R = Matriz de requisições. A i-ésima linha de C representa os recursos alocados para o processo i. Assim C i,j é o número de instâncias do recurso j que o processo i possui. Da mesma forma R i,j é o número de instâncias do recurso j que o processo i necessita. Portanto, m i= 1 C ij + A j = E j Algoritmo Passos do Algoritmo: 1. Cada processo inicia desmarcado 2. Escolher uma linha em R, cujo n. de recursos necessários são todos ao vetor D. Se encontrou Então C i C i + A; e marcar o processo Senão interrompa 3. repetir passo 2 até que todos os processos estejam marcados ou até que seja impossível escolher um processo. 4. Se existir processo desmarcado ele se encontra em deadlock.

Sistemas Operacionais Notas de Aula Cap. 06-12 Recuperação do Deadlock Uma vez detectado um deadlock o sistema deverá corrigir a situação. Uma possibilidade é simplesmente encerrar o processo e remover os recursos alocados a ele. Isso elimina o ciclo, e conseqüentemente o deadlock. Entretanto, e se esse processo já estiver executando por uma hora e estava quase terminando o seu processamento quando o sistema o abortou? O sistema deve ser capaz de responder a questões importantes sobre qual processo o sistema operacional deve abortar. Por exemplo, quem será responsável pelo trabalho perdido? Outra possibilidade é fazer um rollback em um processo, ou seja, remover todos os seus recursos correntemente alocados a ele. O processo perde todas as atualizações feitas por meio do uso desses recursos e sofre uma perda de trabalho, porém, ele não é abortado. O sistema força o processo a voltar ao estado em que ele se encontrava antes da solicitação e alocação dos recursos removidos. Isso pode corresponder a um ponto de partida ou a um checkpoint na lógica do processo. Bibliografia: DEITEL, H. M., DEITEL, P. J. & CHOFFNES, D. R. Sistemas Operacionais 3a. Edição: Person (2005) São Paulo / SP MACHADO, F. B. & MAIA, L. P. Arquitetura de Sistemas Operacionais 3a. Edição: LCT (2002) Rio de Janeiro / RJ SILBERSCHATZ, ABRAHAM & GALVIN, PETER B. Operating System Concepts 5 th Edition: John Wiley (1999) Massachusetts STALLINGS, WILLIAM Operating Systems 2 nd Edition: Prentice-Hall (1995) TANENBAUM, ANDREW S. Sistemas Operacionais Modernos 2ª. Edição. Person (2003) São Paulo / SP

Sistemas Operacionais Notas de Aula Cap. 06-13 TANENBAUM, ANDREW S. & WOODHULL, ALBERT S. Operating Systems: Design and Implementation 2 nd Edition: Prentice-Hall (1997) Upper Saddle River / NJ TOSCANI, S. S.; OLIVEIR, R. S. & CARISSIMI, A. S. Sistemas Operacionais e Programação Concorrente Editora Sagra-Luzzatto (2003) Porto Alegre / RS