Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Silberschatz ,Galvin, and Gagne19998.1Applied Operating System Concepts Módulo 8: Deadlocks ou Impasse • Modelo do Sistema • Caracterização de Deadlock • Métodos para manuseio de Deadlocks • Prevenção de Deadlock (Prevention) • Evitar Deadlock (Avoidance) • Detecção de Deadlock (Detection) • Recuperação de Deadlock • Método combinado para Manuseio de Deadlock Silberschatz ,Galvin, and Gagne19998.2 Mutex Mutex são mecanismos de sincronização que permitem gerir o acesso concorrente à “Região Crítica” em modo de exclusividade (1 utilizador). Semáforo Os semáforos são o mecanismo de sincronização mais complexos, já que permitem, simultaneamente, gerir o acesso concorrente quer em modo de exclusividade (1 utilizador), quer em modo de cooperação (N utilizadores). Revisão Silberschatz ,Galvin, and Gagne19998.3 Deadlock (ou impasse) •Definição “Um conjunto de processos bloqueados cada um de posse de um recurso, esperando por um outro recurso que já está alocado por outro processo do mesmo conjunto” Silberschatz ,Galvin, and Gagne19998.4Applied Operating System Concepts O Problema de Deadlock ou Impasse • Um conjunto de processos bloqueados, cada um retendo um recurso, e esperando pela aquisição de um recurso retido por um outro processo do conjunto • Exemplo – Sistema possui 2 unidades de fitas; – P1 e P2 cada um retendo uma unidade de fita e cada um precisando da outra unidade. • Exemplo – semáforos A e B, inicializados com 1 P0 P1 wait (A); wait(B) wait (B); wait(A) Silberschatz ,Galvin, and Gagne19998.5Applied Operating System Concepts Exemplo de Travessia de Ponte • Tráfego somente em uma direção. • Cada seção da ponte pode ser vista como um recurso. • Se um deadlock ocorre, ele pode ser resolvido se um carro voltar (para trás) - preemptar recurso e continuar. • Vários carros podem ter que voltar no caso de ocorrência de um deadlock. • É possível ocorrer inanição (Starvation). Silberschatz ,Galvin, and Gagne19998.6Applied Operating System Concepts Exemplo de deadlock ou bloqueio perpétuo • Sejam dois Processos P1 e P2 que necessitam utilizar de modo exclusivo os recursos R1 (impressora) e R2 (fita), que não são preemptáveis; • Situações Possíveis: – P1 requer uso de R1 e é atendido; – P2 requer uso de R2 e é atendido; – P1 requer uso de R2: P1 fica bloqueado aguardando por R2; – P2 requer uso de R1: P2 fica bloqueado aguardando por R1; – P1 e P2 permanecem bloqueados indefinidamente, sem chance de modificação na situação. 2 Silberschatz ,Galvin, and Gagne19998.7Applied Operating System Concepts Modelo do Sistema •Tipos de Recursos R1, R2, . . ., Rm • Ex.: Ciclos de CPU, espaço de memória, dispositivos de E/S •Cada tipo de recurso Ri possui Wi instâncias.•Cada processo utiliza um recurso como se segue: – requisita – usa – libera Silberschatz ,Galvin, and Gagne19998.8Applied Operating System Concepts Ciclo de utilização de um recurso Requisita Aguarda Usa Libera O processo fica bloqueado. Outras tentativas para reter o recurso podem ser realizadas. Em alguns SO, os processos são automaticamente bloqueados e acordam quando o recurso se torna disponível. Silberschatz ,Galvin, and Gagne19998.9 DeadLock Processo A Processo B B1 – Aloca TL B2 – Aloca CDRW A1 – Aloca CDRW A2 – Aloca TL Processos A e B tentam alocar os mesmos recursos ao mesmo tempo Silberschatz ,Galvin, and Gagne19998.10Applied Operating System Concepts Caracterização de Deadlock 1) Exclusão Mútua: somente um processo, por vez, pode usar um recurso. 2) Posse e Espera: um processo retendo pelo menos um recurso está esperando por um recurso adicional, que está retido por outro processo. Deadlock pode surgir se as quatro condições ocorrerem simultaneamente. Silberschatz ,Galvin, and Gagne19998.11Applied Operating System Concepts Caracterização de Deadlock (cont.) 3) Sem Preempção: um recurso somente pode ser liberado voluntariamente pelo processo que o retém, após sua utilização. 4) Espera Circular: existe um conjunto de processos em espera {P0, P1, …, Pn} tal que: – P0 é o processo que está esperando por um recurso retido por P1 ; – P1 esperando por um recurso retido por P2, …, – Pn–1 esperando por um recurso retido por Pn, e Pn esperando por um recurso retido por P0. Silberschatz ,Galvin, and Gagne19998.12 Espera circular 3 Silberschatz ,Galvin, and Gagne19998.13Applied Operating System Concepts Gráfico de Alocação de Recursos • V é dividido em dois tipos de nós: – P = {P1, P2, …, Pn}, o conjunto consistindo de todos os processos ativos no sistema. – R = {R1, R2, …, Rm}, o conjunto consistindo de todos os recursos no sistema. • Aresta de pedido – aresta direcionada P1 Rj• Aresta de atribuição – aresta direcionada Rj Pi Um conjunto de vértices de V e arestas E. Silberschatz ,Galvin, and Gagne19998.14Applied Operating System Concepts Grafo de Alocação de Recursos (Cont.) • Processo • Tipo de recurso com 4 instâncias • Pi requisita instância de Rj Pi retém uma instância de Rj Pi Pi Rj Rj Silberschatz ,Galvin, and Gagne19998.15Applied Operating System Concepts grafo de alocação de recursos – Ciclos no grafo pode indicar a existência de situação de deadlocks – A presença de deadlocks pode ser monitorada com a atualização do grafo a cada nova requisição de recursos; – Ex.: P1, P2, R1, R3 estão em deadlock recurso processo recurso processo P fica bloqueado, aguardando por RP tem a posse de R R1 P1 P2 P3 R2 R3 Silberschatz ,Galvin, and Gagne19998.16Applied Operating System Concepts Grafo de Alocação de Recursos (Cont.) • Se um grafo não contiver ciclos, nenhum processo do sistema estará em deadlock; • Se um grafo contiver um ciclo, poderá haver deadlock: • Se cada tipo de recurso tiver exatamente uma instância, um ciclo implicará na ocorrência de um deadlock; – Nesse caso, cada processo envolvido no ciclo está em um deadlock; – Nesse caso, um ciclo é uma condição necessária e suficiente para existência de um deadlock. • Se cada tipo de recurso tiver várias instâncias, então um ciclo NÃO implicará necessariamente na ocorrência de um deadlock; – Nesse caso, um ciclo é uma condição necessária MAS NÃO suficiente para existência de um deadlock. Silberschatz ,Galvin, and Gagne19998.17Applied Operating System Concepts Exemplo: Grafo de alocação de recursos Silberschatz ,Galvin, and Gagne19998.18Applied Operating System Concepts Grafo com Deadlock de P1, P2 e P3 •Existem dois ciclos mínimos: P1R1 P2 R3 P3 R2 P1 e P2 R3 P3 R2 P2 4 Silberschatz ,Galvin, and Gagne19998.19Applied Operating System Concepts Grafo de aloc. de recursos com ciclo, mas sem Deadlock Se P4 liberar o recurso R2, o ciclo é quebrado. Silberschatz ,Galvin, and Gagne19998.20Applied Operating System Concepts Fatos Básicos •Se o grafo não possui ciclo não há deadlock. •Se o grafo contém um ciclo – Se somente uma instância por tipo de recurso, então deadlock ocorre. – Se várias instâncias por tipo de recurso, então existe a possibilidade de deadlock. Silberschatz ,Galvin, and Gagne19998.21Applied Operating System Concepts Métodos para tratamento de Deadlocks 1. Garantir que o sistema nunca entrará em estado de deadlock (prevenção). 2. Permitir que sistema entre em estado de deadlock e então recupera-lo (impedimento). 3. Ignorar o problema e assumir que deadlocks nunca acontecem no sistema. – Utilizado por muitos sistemas operacionais, inclusive no UNIX. Silberschatz ,Galvin, and Gagne19998.22Applied Operating System Concepts 1 - Prevenção de Deadlock (Prevention) Restringir o modo como as requisições podem ser realizadas, garantindo a não existência de pelo menos uma das quatro condições de ocorrência de deadlock: •Exclusão Mútua – quando possível, ser válida para recursos compartilháveis (read-only files); necessária para recursos não compartilháveis (impressoras). Silberschatz ,Galvin, and Gagne19998.23Applied Operating System Concepts Prevenção de Deadlock(Prevention) •Posse e Espera – Para que não aconteça, deve se garantir que quando um processo requisitar um recurso, ele não pode estar retendo nenhum outro recurso. – Requer que processos requisitem todos os recursos antes de começar sua execução, ou – Permitir que processos somente requisitem recursos, quando não possuir nenhum alocado. – Baixa utilização de recursos; possibilidade de starvation (ou inanição). Silberschatz ,Galvin, and Gagne19998.24Applied Operating System Concepts Prevenção de Deadlock (Cont.) • Sem Preempção – Para garantir não haja preempção dos recursos alocados, devemos usar o seguinte protocolo: – Um processo que retém algum recurso requisita outro recurso que não pode lhe ser alocado imediatamente, então ele deve liberar (preemptar) todos os recursos retidos até então. – Recursos disponibilizados (preemptados) são adicionados novamente na lista de recursos que o processo está requisitando. – Processo será reiniciado somente quando ele ganhar novamente os “velhos” recursos, bem como os novos que está requisitando. 5 Silberschatz ,Galvin, and Gagne19998.25Applied Operating System Concepts Prevenção de Deadlock (Cont.) •Espera Circular – para não acontecer pode-se impor uma ordem total em todos os tipos de recursos, e exigir que cada processo requisite-os em ordem crescente de acordo com sua ordenação. Silberschatz ,Galvin, and Gagne19998.26Applied Operating System Concepts Exemplo para quebrar a espera circular • Seja F: R N (função de ordem); • Se o processo requisitou recurso Ri somente poderá requisitar o recurso Rj , se F(Rj) > F(Ri );• Exemplo: F(drive de fita) = 1 F(drive de disco) = 5 F(impressora) = 12 Para usar a unidade de fita e impressora, primeiramente o processo precisa requisitar o driver de fita, e então requisitar a impressora. • Espera circular {P0, P1, ..., Pn} não pode existir pois:– F(Ri) < F(Ri+i) i e ;– uma vez que Pn espera por recurso retido por P0, F(R0) < F(R1)< ... < F(R0) e portanto F(R0) < F(R0) que é contradição. Silberschatz ,Galvin, and Gagne19998.27Applied Operating System Concepts 2 - Evitar Deadlock (Avoidance) Requer que o sistema possua alguma informação adicional sobre os recursos disponibilizados, a priori; • Modelo simples e mais usual requer que cada processo declare o número máximo de recursos de cada tipo que irá precisar; • O algoritmo para evitar-deadlock dinamicamente examina o estado de alocação de recursos para garantir a não existência da condição de espera circular; • O estado de alocação de recurso é definido pelo número de recursos disponíveis e alocados, e o máximo requerido por cada processo. Silberschatz ,Galvin, and Gagne19998.28Applied Operating System Concepts Estado Seguro •Quando um processo requisita um recurso disponível, o sistema deve decidir se esta alocação imediata o colocará em estado seguro. •O sistema estará em estado seguro, se existe uma seqüência segura de todos os processos (todos livres de deadlock) Silberschatz ,Galvin, and Gagne19998.29Applied Operating System Concepts Estado Seguro • A seqüência <P1, P2, …, Pn> é segura se: para cada processo Pi, os recursos que Pi pode ainda requisitar podem ser satisfeitos pelos recursos correntemente disponíveis + recursos retidos por todos os outros processos Pj, com j<i. – Se os recursos que Pi necessita não estiverem disponíveis imediatamente, então Pi pode esperar até que todos os processos Pj tenham terminados. – Quando Pj terminar, Pi pode obter recursos necessitados, executar, retornar recursos alocados e finalizar. – Quando Pi termina, Pi+1 pode obter os recursos de que necessita e, assim sucessivamente. Silberschatz ,Galvin, and Gagne19998.30Applied Operating System Concepts Fatos Básicos •Se um sistema está em estado seguro não há deadlocks. •Se um sistema está em estado inseguro possibilidade de deadlock. •Evitar garantir que o sistema nunca estará em estado inseguro. 6 Silberschatz ,Galvin, and Gagne19998.31Applied Operating System Concepts Espaço de Estado Seguro, Inseguro e Deadlock Seguro Inseguro Silberschatz ,Galvin, and Gagne19998.32Applied Operating System Concepts Algoritmo para o Grafo de Alocação de Recursos •Solicita vértice Pi Rj , indica que o processo Pjpode se apoderar do recurso Rj; representado por linhas pontilhadas •Solicitação de um vértice, transforma-se em vértice requisitado, quando um processo requisita o recurso. •Quando um recurso é liberado por um processo, o vértice lhe atribuído converte-se em pedido de vértice. •Recursos devem ser requisitados, a priori, no sistema. Silberschatz ,Galvin, and Gagne19998.33Applied Operating System Concepts Grafo de alocação de recursos para evitar Deadlock Pedido Emitido, Em EsperaRecurso atribuído a P1 Solicita Recurso apenasSolicita Recurso apenas Silberschatz ,Galvin, and Gagne19998.34Applied Operating System Concepts Estado Não Seguro no Grafo de Alocação de Recursos Para não ocorrer deadlock, P1 deve liberar R1 Silberschatz ,Galvin, and Gagne19998.35Applied Operating System Concepts Algoritmo do Banqueiro (Banker’s Algorithm) •Múltiplas instâncias de um mesmo processo. •Cada processo deve, a priori, declarar a quantidade máxima de recursos que necessita. •Quando um processo requisita um recurso, ele pode ter que esperar. •Quando um processo consegue todos os seus recursos, ele deve retorna-los em um intervalo finito de tempo. Silberschatz ,Galvin, and Gagne19998.36Applied Operating System Concepts Estrutura de Dados para o Alg. do Banqueiro • Seja n= número de processos e m=número de recursos • Available: Vetor de tamanho m. Se available [j] = k, existek instâncias disponíveis do recurso Rj .• Max: matriz n x m . Se Max [i,j] = k, então processo Pipode requisitar no máximo k instâncias do recurso Rj.• Allocation: Matriz n x m. Se Allocation[i,j] = k então Piestá correntemente com k instâncias alocadas do recurso Rj.• Need: Matriz n x m . Se Need[i,j] = k, então Pi pode necessitar de mais k instâncias do recurso Rj para completar sua tarefa.Need [i,j] = Max[i,j] – Allocation [i,j]. 7 Silberschatz ,Galvin, and Gagne19998.37Applied Operating System Concepts Algoritmo de Segurança 1.Seja Work e Finish vetores de tamanho m e n, respectivamente. Inicialização: Work := Available Finish [i ] = false para i - 1,3, …, n. 2.Encontre um i tal que ambos: (a) Finish [i ] = false (b) Needi WorkSe nenhum i existe, vá para passo 4. 3.Work := Work + Allocation iFinish[i ] := trueVá para passo 2. 4.Se Finish [i ] = true para todo i, então o sistema está em estado seguro. Silberschatz ,Galvin, and Gagne19998.38Applied Operating System Concepts Alg. de Req. de Recurso para Processo Pi Requesti = Vetor de requisição para Pi. Se Requesti [j ] = k então o processo Pi deseja k instâncias do recurso Rj. 1. Se Requesti Needi go to 2. Caso contrário, erro de condição pois processos excedeu seu pedido máximo. 2. Se Requesti Available, go to 3. Caso Contrário Pi tem que esperar pois recursos não estão disponíveis. 3. Assume que vai alocar os recursos requisitados por Pimodificando o estadoa como se segue: Available := Available - Requesti ; Allocationi := Allocationi + Requesti ; Needi := Needi – Requesti ;• Se seguro os recursos são alocados a Pi. • Se inseguro Pi deve esperar, e o estado antigo de alocação de recurso e restaurado. Silberschatz ,Galvin, and Gagne19998.39Applied Operating System Concepts Exemplo - Algoritmo do Banqueiro • 5 processos P0 a P4; 3 recursos: A (10 instâncias), B (5 instâncias, e C (7 instâncias). • Situação no 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 Silberschatz ,Galvin, and Gagne19998.40Applied Operating System Concepts Exemplo (Cont.) • O valor da matriz Need é definido por: need = 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 estado seguro poisa seqüência < P1, P3, P4, P2, P0> satisfaz o critério de segurança. Silberschatz ,Galvin, and Gagne19998.41Applied Operating System Concepts Exemplo (Cont.) : P1 requisita (1,0,2) • Verifica se Request Available (isto é, (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 • Executando o algoritmo de segurança ele mostra que a seqüência <P1, P3, P4, P0, P2> satisfaz o critério de segurança. • Pode o pedido de (3,3,0) por P4 ser honrado?• Pode o pedido de (0,2,0) por P0 ser honrado? Silberschatz ,Galvin, and Gagne19998.42Applied Operating System Concepts 3 - Detecção de Deadlock •Permite o sistema entrar em estado de deadlock; •Aplica-se um algoritmo de detecção de deadlock; •Aplica-se um esquema de recuperação. 8 Silberschatz ,Galvin, and Gagne19998.43Applied Operating System Concepts Instância Única de Cada Recurso •Manter um grafo de espera (espera um processo que detém a posse de um recurso finalizar sua execução) – Os Nodos são processos. – Pi Pj se Pi está esperando por Pj.•Periodicamente chamar um algoritmo para pesquisar por um ciclo no grafo. •Um algoritmo para detectar um ciclo em um grafo, requer complexidade da ordem de n2 operações, onde n é o número de vértices do grafo. Silberschatz ,Galvin, and Gagne19998.44Applied Operating System Concepts Grafos de Alocação-Recursos e Espera Grafo de Alocação-Recurso Correspondente grafo de Espera Silberschatz ,Galvin, and Gagne19998.45Applied Operating System Concepts Várias Instâncias de um Recurso •Available: vetor de tamanho m indicando o número de recursos disponíveis. •Allocation: matriz n x m define o número de recursos correntemente alocado a cada processo. •Request: matriz n x m indica a requisição corrente de cada processo. – Se Request [i j ] = k, então processo Pi está requisitando mais k instâncias do recurso Rj. Silberschatz ,Galvin, and Gagne19998.46Applied Operating System Concepts Algoritmo de Detecção 1.Seja Work e Finish vetores de tamanho m e n, respectivamente Initialize: (a) Work :=Available (b) For i = 1,2, …, n, if Allocationi 0, então Finish[ i ] := false; caso contrário, Finish[ i ] := true. 2. Encontre um índice i tal que ambos: (a) Finish[ i ] = false (b) Requesti WorkSe tal i não existir, vá para passo 4. Silberschatz ,Galvin, and Gagne19998.47Applied Operating System Concepts Algoritmo de Detecção (Cont.) 3. Work := Work + AllocationiFinish[ i ] := truevá para passo 2. 4. Se Finish[ i ] = false, para algum i, 1 i n, então o sistemas está em estado de dedlock. Mais ainda, se Finish[ i ] = false, então Pi está bloqueado. Algoritmo requer ordem de m x n2 operações para detectar se o sistema está em estado de deaklock. Silberschatz ,Galvin, and Gagne19998.48Applied Operating System Concepts Exemplo • Cinco processos P0 a P4 ; três recursos: A (7 instâncias), B (2 instâncias), e C (6 instâncias). • Situação np 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. 9 Silberschatz ,Galvin, and Gagne19998.49Applied Operating System Concepts Exemplo (Cont.) • P2 requisita uma instância adicional do recurso 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• Estado do sistema? – Pode reclamar recurso retido pelo processo P0, mas haverá recursos insuficientes para atender requisição de outros processos. – Há deadlock nos processos P1, P2, P3, e P4. Silberschatz ,Galvin, and Gagne19998.50Applied Operating System Concepts Uso do algoritmo de Detecção •Quando e quão freqüente algoritmo deve ser chamado, depende de: – Quão freqüente é a provável ocorrência de deadlock? – Quantos processos precisarão ser voltados atrás (recompostos)? • Um para cada ciclo disjunto •Se o algoritmo de detecção for chamado arbitrariamente, pode ocorrer muitos ciclos no grafo de recursos e, neste caso, poderemos não ser capaz de dizer quais dos muitos processos em deadlock causaram o deadlock. Silberschatz ,Galvin, and Gagne19998.51Applied Operating System Concepts Recuperação de Deadlock: Terminação de Processo • Abortar todos os processos em deadlock; • Abortar um processo por vez até que o ciclo de deadlock seja eliminado; • Em que ordem devemos abortar os processos? – Prioridade de processos; – Quando tempo o processo está em execução e quanto tempo falta para seu término; – Recursos que o processo já utilizou; – Recursos que o processo precisa para finalizar; – Quantos processos são necessários ser finalizados; – O processo é um processo interativo ou batch? Silberschatz ,Galvin, and Gagne19998.52Applied Operating System Concepts Recuperação de Deadlock: Preempção de Recurso •Selecionar a vítima – minimizar custo. •Retornar (Rollback) – retornar para algum estado seguro e reiniciar processo a partir deste estado. •Starvation (inanição) – um mesmo processo pode sempre ser escolhido como vítima! Incluir número de retornos no fator de custo. Silberschatz ,Galvin, and Gagne19998.53Applied Operating System Concepts Recuperação usando preempção • Recursos podem ser retirados do corrente processo proprietário (em execução) e alocado a um outro processo; • A escolha do recurso depende de quão facilmente ele pode ser requisitado; • Freqüentemente a recuperação é impossível; • Freqüentemente requer intervenção manual. Silberschatz ,Galvin, and Gagne19998.54Applied Operating System Concepts Recuperação por rollback • Os Processos sofrem checkpoint periodicamente. Um checkpoint é uma imagem da memória + estado dos recursos correntemente alocados ao processo; • Após a detecção de um deadlock, os recursos necessários são identificados. • Cada processo com posse de algum recurso sofre um roll-back para um instante de tempo anterior. • Isso provoca a liberação dos recursos, que agora são alocados aos processos de modo a solucionar o deadlock; • O trabalho desenvolvido após o checkpoint é perdido. – Relacionamento entre a freqüência de deadlock e periodicidade de checkpoint. 10 Silberschatz ,Galvin, and Gagne19998.55Applied Operating System Concepts Recuperação através da eliminação de processos• Processos pertencentes ao ciclo de deadlock são finalizados um de cada vez até o desaparecimento do deadlock; • Processos não pertencente ao ciclo de deadlock, mas mantendo recursos necessários aos processos em deadlock, são finalizados (kill). • Candidatos: – P re-inicializável sem efeitos colaterais (ex: compiladores); – P pertencente a mais de um ciclo de deadlocks; – P de pouca importância. Silberschatz ,Galvin, and Gagne19998.56Applied Operating System Concepts Método Combinado no tratamento de Deadlock •Combinar os três métodos básicos – Prevenção (prevention); – Evitar (avoidance); – Detecção. permitindo o uso da metodologia ótima para cada classe de recursos no sistema. •Particionar recursos em classes ordenadas hierarquicamente. •Utilizar a técnica mais apropriada para tratamento de deadlock dentro de cada classe.
Compartilhar