Sistemas Operativos. Deadlocks FEUP. 23 de Outubro, 2009

Documentos relacionados
Sumário. Sistemas Operativos: Escalonamento de Processos e Deadlocks. Padrão de Execução dum Processo. Multiprocessamento

Sistemas Operativos: Deadlocks

SSC0640 Sistemas Operacionais I

Recursos. Exemplos de recursos:

Capítulo 3 Deadlocks - Impasses

DEADLOCKS IMPASSES. Vinícius Pádua

Escalonamento de Processos

MAC422/5753 Sistemas Operacionais

Programação Concorrente. 2º Semestre 2010

Capítulo 3 Deadlocks - Impasses

Capítulo 7: Impasse (Deadlocks( Deadlocks)

Deadlocks (impasses)

Sistemas Operacionais. Deadlock

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

Sistemas Operacionais Bloqueios Perpétuos

SOP - TADS Impasses - Deadlock

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

SISTEMAS OPERACIONAIS

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

Sistemas Operativos: Concorrência

Sistemas Distribuídos

ALGORITMOS DISTRIBUÍDOS Deadlock

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

Capítulo 3. Deadlocks. Recursos

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

Sistemas Operacionais. DeadLock. Edeyson Andrade Gomes.

Sistemas Operativos: Implementação de Processos

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

Deadlocks. Sistemas Operacionais - Professor Machado

Sistemas Operativos: Implementação de Processos

Sistemas Operativos: Escalonamento de Processos

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

Impasses. Pedro Cruz. EEL770 Sistemas Operacionais

Multiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. Padrão de Execução dum Processo

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

Impasses. Pedro Cruz. EEL770 Sistemas Operacionais

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

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

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

Sistemas de Informação. Sistemas Operacionais

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Sistemas Operativos: Concorrência (Parte 2)

Resumo: Sistemas Operacionais Abertos

Sistemas Operacionais: Deadlocks

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:

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

Sistemas de Tempo-Real. Acesso exclusivo a recursos partilhados

Sistemas de Tempo-Real. Acesso exclusivo a recursos partilhados

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

Sistemas Operacionais

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

SISTEMAS OPERACIONAIS. 1ª. Lista de Exercícios

Escalonamento de Processos. Estratégia de atribuição do Processador aos Processos

Comunicação entre Processos

Arquitetura de Sistemas Operativos

Inversão de prioridades

Exclusão Mútua (mutex)

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

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa

Infra-Estrutura de Software. Escalonamento

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

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

Execução Concorrente

6. Mostre os principais modelos de organização interna de um sistema operacional.

Sistemas Operacionais. Escalonamento de processos

Semáforos. Gerenciamento de Recursos I

Sincronização de Processos (2)

SOP - TADS Escalonamento de Processos

Estratégias de Escalonamento de Processos

Escalonamento de Processos Estratégias de Escalonamento de Processos

SSC0640 Sistemas Operacionais I

Escalonamento. Decidindo qual processo vai executar. Infra-estrutura de Software

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 2 Unidade 2 DURAÇÃO: 50 MINUTOS

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

Sistemas Operacionais

Infra-estrutura de Software. Escalonamento. Decidindo qual processo vai executar

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Sincronização e comunicação entre processos

Definição. ? Algoritmo de Escalonamento de CPU. ? Algoritmo do S.O. que determina qual o próximo processo a ocupar a CPU

Na Aula Anterior... Escalonamento de Processos. Nesta Aula. Escalonamento. Comportamento de um Processo. Historicamente...

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Infra-Estrutura de Software. Sistemas Operacionais Revisão

Sistemas Distribuídos Aula 5

Arquitetura de Sistemas Operativos

Semáforos. Gerenciamento de Recursos I

Escalonamento da CPU

Programação concorrente (processos e threads)

Escalonamento da CPU

Conceitos. Gestão de Transacções. Transacção. Conceitos e Propriedades. Controlo de Concorrência. Recuperação. Transacções no SGBD Oracle

Cadeira de Sistemas Operativos. Frequência 1º Semestre. 8 de Fevereiro de 2006

Sistemas Operacionais: Sincronização entre processos

TE244 - Sistemas Operacionais Lista Exercícios 1

Processos. Escalonamento de Processos

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Unidade III Gerência de Processos

Informática Básica. Licenciatura em Ciência da Informação. Tito Carlos S. Vieira. Tito Carlos S. Vieira

Transcrição:

Sistemas Operativos Rui Maranhão (rma@fe.up.pt) FEUP 23 de Outubro, 2009 Agradecimento: Pedro Souto (pfs@fe.up.pt) Rui Maranhão (FEUP) 23 de Outubro, 2009 1 / 33

Sumário O Problema Grafos de Alocação de Recursos Leitura Complementar Rui Maranhão (FEUP) 23 de Outubro, 2009 2 / 33

O Problema Um zelo excessivo na eliminação de race conditions pode conduzir a um outro problema deadlock: um cenário em que 2 ou mais processos ficam bloqueados indefinidamente. Um exemplo é a seguinte solução do bounded buffer com semáforos: void remove(int item) mutex.down(); // keep threads out empty.down(); // wait for an item que difere da solução correcta na ordem de execução das operações down(): Se o buffer estiver vazio, o consumidor bloqueia sem libertar o mutex, impedindo o produtor de eventualmente introduzir a mensagem no buffer. Rui Maranhão (FEUP) 23 de Outubro, 2009 4 / 33

Recursos O Problema O estudo do problema de deadlock tem origem em SOs, no contexto da gestão de recursos dum computador. Um recurso é um objecto usado por um processo. P. ex.: físico: disco, memória, CPU,...; lógico: um socket, um ficheiro, uma secção crítica,...; Num sistema, pode haver mais do que um recurso do mesmo tipo, p.ex. disco. Propriedades importantes de recursos: tipo de acesso certos recursos, p.ex. uma impressora, têm que ser acedidos em exclusão mútua; preemptibilidade recursos podem ser ou não preemptíveis: isto é, podem ser ou não removidos dum processo sem problemas de maior. Por exemplo, uma impressora não é preemptível, mas o CPU é-o. Rui Maranhão (FEUP) 23 de Outubro, 2009 5 / 33

O Problema Uso de Recursos por Processos Recursos são geridos por gestores, os quais podem ser ou não componentes do SO. O uso de um recurso por um processo tipicamente envolve a sequência: pedido do recurso; uso do recurso; libertação do recurso. Se o recurso pedido por um processo não estiver disponível, o processo não o pode usar. Neste caso, o processo: ou bloqueia, à espera que o recurso fique disponível; ou prossegue, mas não terá acesso ao recurso pedido. Rui Maranhão (FEUP) 23 de Outubro, 2009 6 / 33

Pedido de Recurso O Problema (a) Proteger acesso a um recurso (b) Proteger acesso a dois recursos typedef int semaphore; semaphore resource_ 1; typedef int semaphore; semaphore resource_1; semaphore resource_2; void process_a(void) { void process_a(void) { down(&resource _1); down(&resource _1); use_resource_1( ); down(&resource _2); up(&resource_ 1); use_ both_resources( ); } up(&resource _2); up(&resource _1); } (a) (b) Rui Maranhão (FEUP) 23 de Outubro, 2009 7 / 33

Pedido de Recurso O Problema (a) Código livre de deadlocks (b) Código com potencial deadlock ypedef int semaphore; semaphore resource_1; semaphore resource_2; semaphore resource_1; semaphore resource_2; void process_a(void) { void process_a(void) { down(&resource _1); down(&resource _1); down(&resource _2); down(&resource _2); use_both_resources( ); use_both_resources( ); up(&resource _2); up(&resource _2); up(&resource _1); up(&resource _1); } } void process_b(void) { void process_b(void) { down(&resource _1); down(&resource _2); down(&resource _2); down(&resource _1); use_both_resources( ); use_both_resources( ); up(&resource _2); up(&resource _1); up(&resource _1); up(&resource _2); } } (a) (b) Rui Maranhão (FEUP) 23 de Outubro, 2009 8 / 33

Bloqueio Mútuo (Deadlock) O Problema Definição um conjunto de processos está mutuamente bloqueado (deadlocked), se cada processo nesse conjunto está à espera dum evento que apenas outro processo nesse conjunto pode causar. Normalmente, o evento pelo qual um processo espera é a libertação dum recurso na posse de outro processo nesse conjunto Numa situação de deadlock, nenhum processo pode: executar; libertar os recursos que detém; ser activado. Rui Maranhão (FEUP) 23 de Outubro, 2009 9 / 33

O Problema Condições Necessárias para Deadlock Bloqueio á espera que o recurso fique disponível (exclusão mútua); Espera com retenção processos não libertam os recursos na sua posse quando bloqueiam à espera de outros recursos; Não-preempção recursos na posse dum processo não lhe podem ser retirados; Espera-circular tem que haver uma cadeia de 2 ou mais processos, cada um dos quais à espera dum recurso na posse do processo seguinte. Rui Maranhão (FEUP) 23 de Outubro, 2009 10 / 33

Grafos de Alocação de Recursos Modelação: Grafos de Alocação de Recursos Um grafo consiste num conjunto de nós interligados por arcos. Um grafo de alocação de recursos tem 2 tipos de nós: processos (círculos); recursos (quadrados). Um arco dum recurso para um processo, indica que o recurso está na posse do processo; Um arco dum processo para um recurso, indica que o processo está bloqueado à espera dum recurso. A S R B Rui Maranhão (FEUP) 23 de Outubro, 2009 11 / 33

Grafos de Alocação de Recursos Grafos de Alocação e Em sistemas com apenas 1 exemplar de cada tipo de recurso, se um grafo de alocação tiver um ciclo, então há deadlock: A R S Há generalizações do grafo de recursos para detectar bloqueio mutúo quando existem mais de 1 exemplar de cada tipo. B Rui Maranhão (FEUP) 23 de Outubro, 2009 12 / 33

Grafos de Alocação de Recursos Exemplo: Grafos de Alocação e Seja a seguinte evolução temporal dos requisitos de recursos de 3 processos: Proc. A Proc. B Proc. C req. R req. S req. T req. S req. T req. R lib. R lib. S lib. T lib. S lib. T lib. R Admite-se que: os processos executam em round-robin; há comutação de processos imediatamente após um processo pedir o recurso. A B C R S T Rui Maranhão (FEUP) 23 de Outubro, 2009 13 / 33

Estratégias de Ataque ao Problema de Deadlock 1. Ignorar o problema: algoritmo da avestruz (Tanenbaum). 2. Detectar e recuperar. 3. Evitar (avoidance: solução dinâmica). 4. Prevenir (prevention: solução estática). Rui Maranhão (FEUP) 23 de Outubro, 2009 14 / 33

Algoritmo da Avestruz Ignorar o problema: pretender que não existe. Pode ser aceitável. se a probabilidade de deadlock fôr muito baixa; o custo de qualquer das outras soluções fôr elevado. Unix tenta evitar situações de deadlock, mas não as elimina completamente. É um compromisso entre: correcção; conveniência/eficiência; análogo a muitos em engenharia.... viver é gerir riscos. Rui Maranhão (FEUP) 23 de Outubro, 2009 15 / 33

Detectar e Recuperar Tem 2 partes: 1. Detectar o deadlock: O algoritmo basicamente testa se há alguma ordem de terminação dos processos. 2. Recuperar da situação: preempção de recursos; roll-back de processos; terminação de processos. Rui Maranhão (FEUP) 23 de Outubro, 2009 16 / 33

Detecção de Deadlock Faz uso das seguintes estruturas de dados: Vector dos recursos existentes, E, tem m elementos, i.e. tantos quantos os tipos de recursos. O valor de cada elemento é o número de recursos do tipo correspondente existentes no sistema. Vector de recursos disponíveis, A, com m elementos. Matriz dos recursos atribuídos, C, de dimensão n m, em que n é o número de processos. A linha i é o vector com os recursos atribuídos ao processo P i. Matriz dos pedidos pendentes, R, de dimensão n m. A linha i é o vector com os pedidos pendentes de recursos pelo processo P i. Rui Maranhão (FEUP) 23 de Outubro, 2009 17 / 33

Estruturas de dados para detecção de deadlocks Resources in existence (E 1, E 2, E 3,, E m ) Current allocation matrix Resources available (A 1, A 2, A 3,, A m ) Request matrix C 11 C 21 C 12 C 22 C 13 C 23 C 1m C 2m R 11 R 21 R 12 R 22 R 13 R 23 R 1m R 2m C n1 C n2 C n3 C nm R n1 R n2 R n3 R nm Row n is current allocation to process n Row 2 is what process 2 needs Rui Maranhão (FEUP) 23 de Outubro, 2009 18 / 33

Exemplo de Detecção de Deadlock E = [ 4 2 3 1 ] A = [ 2 1 0 0 ] 0 0 1 0 2 0 0 1 C = 2 0 0 1 R = 1 0 1 0 0 1 2 0 0 0 0 0 Testar se há uma ordem de terminação dos processos. P 1 e P 2 estão bloqueados: os seus pedidos não podem ser satisfeitos. Mas P 3 pode executar e se terminar libertará os seus recursos. Depois os pedidos de P 2 podem ser satisfeitos e P 2 poderá terminar, libertando os seus recursos. Finalmente, os pedidos de P 1 poderão ser satisfeitos e P 1 poderá terminar: não há deadlock. Rui Maranhão (FEUP) 23 de Outubro, 2009 19 / 33

Algoritmos de Detecção Os algoritmos de detecção são caros : O(m n 2 ). De facto, a complexidade dum algoritmo não é a história completa: há constantes a considerar e os valores dos parâmetros se m ou n forem pequenos o custo pode ser baixo. Quando devem ser executados? sempre que é feito um pedido; periodicamente; quando a utilização do CPU diminui. Rui Maranhão (FEUP) 23 de Outubro, 2009 20 / 33

Recuperação de Deadlock (1/2) Preempção de recursos: depende do recurso em causa: não é sempre aplicável; pode requerer intervenção humana, Rollback de processos: fazer o checkpoint do estado dos processos, periodicamente; em caso de deadlock, identificar um processo que se rolled-back quebrará o deadlock. Terminar um processo no ciclo: de preferência, dever-se-á terminar um processo que possa ser reexecutado de início sem problemas de maior. Rui Maranhão (FEUP) 23 de Outubro, 2009 21 / 33

Recuperação de Deadlock (2/2) Em qualquer dos casos, é preciso escolher uma vítima. Alguns critérios: o processo que possui menos recursos; o processo que possui mais recursos; o processo que usou menos o CPU. Pode ainda, usar-se o seguinte critério: o menor conjunto de processos que quebrará o deadlock. Com excepção de roll-back as outras soluções podem deixar o sistema num estado inconsistente. Mesmo com rollback, fazer o checkpointing do estado dos processos pode não ser suficiente: E se o processo rolled-back modificou um ficheiro desde o último checkpoint? Rui Maranhão (FEUP) 23 de Outubro, 2009 22 / 33

Estados Seguros e Não-seguros Admitamos que 3 processos partilham só um tipo de recurso, e que há 10 unidades desse tipo. A B C Has Max Has Max Has Max Has Max Has Max 3 2 2 Free: 3 (a) 9 4 7 A B C 3 4 2 Free: 1 (b) 9 4 7 A B C 3 0 B 0 2 Free: 5 (c) 9 7 A C 3 7 Free: 0 (d) 9 7 A B C 3 0 0 Free: 7 (e) 9 Rui Maranhão (FEUP) 23 de Outubro, 2009 23 / 33

Deadlock Avoidance (Solução Dinâmica) Ideia antes de satisfazer um pedido, averiguar se essa satisfação conduz a um estado não-seguro Requisito desta técnica: estratégia pessimista em comparação com detecção & recuperação. é necessário o conhecimento a priori dos requisitos máximos de cada tipo de recurso por cada processo. Rui Maranhão (FEUP) 23 de Outubro, 2009 24 / 33

Algoritmo para Deadlock Avoidance Faz uso das seguintes estruturas de dados: Vector dos recursos existentes, E, tem m elementos, i.e. tantos quantos os tipos de recursos. O valor de cada elemento é o número de recursos do tipo correspondente existentes no sistema. Vector de recursos disponíveis, A, com m elementos. Matriz dos recursos atribuídos, C, de dimensão n m, em que n é o número de processos. A linha i é o vector com os recursos atribuídos ao processo P i. Matriz dos recursos a atribuir, R, de dimensão n m. A linha i é o vector com os pedidos de recursos que o processo P i ainda poderá fazer: Algoritmo semelhante ao de detecção de deadlock. The Banker s Algorithm Rui Maranhão (FEUP) 23 de Outubro, 2009 25 / 33

Exemplo de Deadlock Avoidance Seja após a satisfação condicionada dum pedido: E = [ 6 3 4 2 ] A = [ 1 0 2 0 ] 3 0 1 1 1 1 0 0 0 1 0 0 C = 1 1 1 0 1 1 0 1 R = 0 1 1 2 3 1 0 0 0 0 1 0 0 0 0 0 2 1 1 0 1. P 4 pode terminar: A = [ 2 1 2 1 ] ; 2. P 1 pode terminar: A = [ 5 1 3 2 ] ; 3. P 2 pode terminar: A = [ 5 2 3 2 ] ; 4. P 3 pode terminar: A = [ 6 3 4 2 ] ; O pedido pode ser satisfeito: não conduz a deadlock mesmo que os processos usem os recursos ao máximo. Rui Maranhão (FEUP) 23 de Outubro, 2009 26 / 33

Considerações sobre Deadlock Avoidance Um pedido de recursos só é satisfeito, se os recursos que ficarem disponíveis, permitirem a terminação de todos os processos que detém pelo menos um recurso, assumindo que cada um destes processos usa o número máximo de recursos correspondente. Infelizmente, a utilidade deste algoritmo (Banker s Algorithm, de Dijkstra) é no melhor dos casos limitada: normalmente, os processos não conhecem a priori as suas necessidades máximas. Provavelmente, alguns sistemas de tempo-real serão a única excepção. Rui Maranhão (FEUP) 23 de Outubro, 2009 27 / 33

Prevenir (Solução Estática) Ideia garantir que 1 das 4 condições necessárias nunca ocorre: 1. Exclusão mútua; 2. Espera com retenção; 3. Não-preempção; 4. Espera circular. deadlock avoidance é uma solução dinâmica: o programa executa um algoritmo para determinar se a satisfação do pedido pode conduzir a deadlock. deadlock prevention é uma solução estática: impede-se a ocorrência de deadlock por concepção do programa. Rui Maranhão (FEUP) 23 de Outubro, 2009 28 / 33

Prevenir : Não-exclusividade Exclusão mútua, p.ex., recorrendo a processos auxiliares - printer spooler: nem todos os recursos se prestam a spooling; a contenção no acesso a outros recursos (p.ex. disco, no caso do printer spooler) pode também dar origem a deadlocks. Princípio, em qualquer dos casos, deve-se: atribuir um recurso apenas quando necessário; minimizar o número de processos que partilham um recurso. Rui Maranhão (FEUP) 23 de Outubro, 2009 29 / 33

Prevenir : Espera sem Retenção Espera com retenção de recursos: Pedir todos os recursos necessários antes de iniciar tarefa: sofre do mesmo problema que deadlock avoidance. Alternativamente, um processo deverá libertar todos os recursos que possui, quando o pedido de um recurso conduziria a um bloqueio: quando desbloqueado, o processo terá que readquirir todos os recursos de novo; é uma variante da solução anterior, na qual os recursos necessários são descobertos dinamicamente. Técnica usada por vezes ao nível do kernel do SO. Rui Maranhão (FEUP) 23 de Outubro, 2009 30 / 33

Prevenir : Preempção e Não-circularidade Preempção dos recursos: retirar recursos a um processo (sem a sua cooperação) é inviável na maioria dos casos. Espera circular pode ser evitada por vezes. Por exemplo: definindo uma ordem total para todos os tipos de recursos; impondo que o pedido dos recursos respeite essa ordem. Infelizmente, nem sempre é viável. Rui Maranhão (FEUP) 23 de Outubro, 2009 31 / 33

Mais sobre Gestão de Recursos Na prática, usa-se uma combinação destas técnicas. Inanição (starvation) de processos pode ocorrer também associada à gestão de recursos: quando o número de recursos disponível é inferior ao número de recursos pedido, o sistema tem que decidir a que processos atribuir os recursos disponíveis; se o algoritmo usado favorecer alguns processos em relação a outros, estes últimos poderão ser continuamente preteridos no acesso aos recursos e assim impossibilitados de fazer qualquer progresso. O escalonamento de processos é um problema de gestão dum recurso particular: o CPU. Rui Maranhão (FEUP) 23 de Outubro, 2009 32 / 33

Leitura Complementar Leitura Complementar Modern Operating Systems, 3rd. Ed. Secção 6.1: Resources Secção 6.2: Introduction to Secção 6.3: The Ostrich Algorithm Secção 6.4: Deadlock Detection and Recovery Secção 6.5: Deadlock Avoidance Secção 6.6: Deadlock Prevention Subsecção 6.7.4: Starvation Rui Maranhão (FEUP) 23 de Outubro, 2009 33 / 33