sistemas operacionais - pucrsemoreno/undergraduate/cc/sisop/... · 2018. 8. 23. · evitar a...
TRANSCRIPT
-
Sistemas Operacionais
Programação ConcorrenteImpasses
Edson [email protected]
http://www.inf.pucrs.br/~emoreno
mailto:[email protected]
-
Sumário Princípios de Deadlock
Técnicas de solução do problema
Prevenir a ocorrência de deadlock
Evitar a possibilidade de ocorrência de deadlock
Detecção a ocorrência de deadlock e recuperar
-
Deadlock Um conjunto de processo está em deadlock se
Cada processo do conjunto está bloqueado
Se o bloqueio está ocorrendo pelo aguarde de um evento
Se este evento somente pode ser disparado por outro processo
Se este outro processo também está bloqueado
Tipicamente envolve processos competindo pelo mesmo recurso
-
Deadlock em potencial
Precisa dos
quadrantes A
e B
Precisa dos
quadrantes B
e C
Precisa dos
quadrantes C
e D
Precisa dos
quadrantes D
e A
-
Deadlock real
Trava até que
B esteja livre
Trava até que
C esteja livre
Trava até que
D esteja livre
Trava até que
A esteja livre
-
Deadlock real
-
Dados dois processos P e Q
Dados os process P e Q
Cada qual precisa acessar a um
recurso A e B por um tempo
determinado
-
Diagrama de deadlock
-
Lógica alternativa
Suponha que P
Não necessite de ambos recursos ao mesmo tempo
Assim, os processo podem ser construídos da seguinte forma...
-
Diagrama lógico alternativo
-
Exemplo
Situação
Há um espaço de 200Kbytes para ser alocado
A seguinte seqüência de eventos ocorre
Deadlock ocorre se ambos processos progredirem para sua
segunda requisição
P1
. . .
. . .Request 80 Kbytes;
Request 60 Kbytes;
P2
. . .
. . .Request 70 Kbytes;
Request 80 Kbytes;
-
Grafo de alocação de recurso
Grafo dirigido
Detalha um estado de um recurso ou processo
-
Alocação de recursos - Grafo de deadlock
-
Condições de um possível Deadlock
Exclusão mútua
Apenas um processo pode usar o recurso por vez
Segurar e esperar
Um processo pode conter recursos alocados enquanto aguarda a
atribuição de outros
Sem preempção
Nenhum recurso pode ser forçosamente removido de um
processo que o detem
-
Deadlocks reais requerem
As três condições previamente apresentadas, mais:
Dependência circular
Fechamento de um ciclo entre processo existentes
Cada processo “segura” pelo menos um recurso necessário por
outro processo da cadeia
-
Tratando deadlocks
Quatro abordagens gerais
Desconsiderar a ocorrência de deadlock
Prevenir a possibilidade de ocorrência de deadlock
Evitar a ocorrência de deadlocks
Detectar a ocorrência de deadlock e recuperar
-
Algoritmo do avestruz Estratégia mais econômica
Projetista tem conhecimento de que o problema pode ocorrer, mas
Finge que não há problemas
Decisão é tomada levando em consideração
Frequência com que isto pode ocorrer
O problema que isto pode causar
Desempenho do sistema pode ser prejudicado pela observação
Rotina de observação pode causar lentidão
Da ocorrência de deadlock
Trata-se o problema
-
Previnindo a ocorrência de deadlock
-
Previnir a ocorrência de deadlock Ação tomada durante a elaboração do projeto de um sistema
Ação realizada de forma estática
Exclui a possibilidade de ocorrência de um deadlock
Dois métodos principais
Indireto
Previne uma das três condições necessárias para a ocorrência de um deadlock
Exclusão mútua
segura e espera
sem preempção
Direto
Previne a ocorrência de dependência circular
-
Formas de prevenção Exclusão mútua
Se o acesso a um recurso requer exclusão mútua então deve ser suportada pelo OS
Segura e aguarda
Um processo requer todos os recursos necessários de uma só vez
Somente é liberado o acesso quando todos os recursos estão disponíveis
Sem preempção
Considerando um processo
Que segura alguns recursos
Requer outro(s), que lhe são negados
Então
o O processos deve liberar os recursos que possui e requisitá-los novamente
Dependência circular
Definir uma requisição linear dos recursos
Previnir a ocorrência de deadlock
-
Evitando a possibilidade de ocorrência de deadlock
-
Evitar a possibilidade Ação tomada durante a elaboração do projeto de um sistema
Ação realizada de forma dinâmica
Decisão é tomada durante a execução
Se o atendimento a requisição a um recurso pode levar a uma situação de
deadlock
Exigência para tal abordagem
Ter conhecimento de requisições futuras de processos
-
Abordagens para evitar tal ocorrência
Negação da inicialização de um processo
Não permitir que um processo inicie se pode levar a um deadlock
Negação de alocação de recursos a um processo
Não libera um recurso para um processo se este potencialmente levar a ocorrência
de deadlock
Evitar a possibilidade
-
Evitar a possibilidade Negação de inicialização de processos
Parâmetros avaliados
Recursos atualmente em uso pelos processos existentes
Recursos que serão solicitados pelo novo processo
Decisão
Nega se ultrapassar um dado valor máximo
Filosofia
Assume a ocorrência de pior caso (Murphy)
Existe a possibilidade dos processos existente solicitarem juntos os recursos
-
Evitar a possibilidade Negação de alocação de recurso
Referido como o algoritmo do banqueiro
Considera um sistema com
Número fixo de recursos
Número fixo de processos
Zero ou mais processos alocando recursos
Explora o conceito de estados
Estado : Situação corrente de recursos e processos em um sistema
Estado seguro: Situação onde há pelo menos uma seqüência que não cause deadlock
Estado não seguro: Situação onde uma situação de deadlock pode ser encontrada
-
Evitar a possibilidade Estado Reflete a alocação corrente de recursos a processos
Representado por
Dois vetores
o Recursos (Ri)
• Lista a quantidade total existente de cada recurso no sistema
o Disponibilidade (Vi)
• Lista a quantidade total de recursos ainda não alocados no sistema
Duas matrizes
o Requisições (Cij)
• Vincula as requisições de um processo i a um recurso j
o Alocações (Aij)
• Vincula as alocações correntes de um processo i a um processo j
-
Evitar a possibilidade
Determinando estado seguro
Considere
Um sistema consistindo de quatro processos e três recursos
As alocações são feitas para os processos
Há um estado seguro?
Quantidade
de recursos
existentes
Recursos
disponíveis
pós alocação
-
Evitar a possibilidade Dado (Cij - Aij) ≤ Vj, para todo j, tal que
i representa um processo
j representa os recursos
Cij:representa as requisição de recursos pelos processos
Aij: representa as alocações de recursos para processos
Vj: representa a quantidade ainda disponivel de um recurso
P1 não pode concluir sua execução pois
Possui uma unidade de R1 mas requer 2 mais duas
Requer ainda duas unidades de R2 e duas unidades de R3.
Se associarmos uma unidade de R3 para P2
Este possuirá o número de requisitos alocados
Poderá completar sua execução
Posteriormente liberar tais recursos
-
Evitar a possibilidade Concluída a execução de P2
Algum dos processo restantes pode ser executada até o fim?
Sim, tanto P1 quanto P3 quanto p4
P2 é finalizado
-
Concluída a execução de P1
Tanto P3 quanto P4 podem ser executados até o final
Evitar a possibilidade
-
Concluída a execução de P3
P4 pode ser executado até o final
Desta foram um estado seguro de execução é garantido
Evitar a possibilidade
-
Evitar a possibilidade
Como determinar um estado não seguro Dado o estado inicial
-
Evitar a possibilidade
Como determinar um estado não seguro Supondo que P1 aloque uma unidade a mais de R1 e de R3
-
Evitar a possibilidade
Determinando um estado não seguro Das alocações de R1 e R3 por P1
Cada processo vai necessitar de pelo menos uma unidade de R1
Não há como qualquer processo ser completado
Conseqüência
Existe uma possibilidade de ocorrência de deadlock
Para evitar a ocorrência de deadlock
P1 deve ter seu pedido negado e ser bloqueado
-
Evitar a possibilidade
Determinando um estado não seguro A observação anterior não garante que um deadlock ocorrerá
Sistema pode retornar a um estado seguro
P1 libera os recursos R1 e/ou R3 antes destes serem requisitados
Técnica de evitar deadlock
Não prediz a ocorrência
Antecipa a possibilidade de ocorrência
-
Fluxo de operação
Quando um processo faz uma requisição a um conjunto de recursos
Assume-se que a requisição será atendida
Atualiza o estado do sistema
Determina se a liberação resulta em um estado seguro
Em caso positivo
A requisição realmente é atendida
Em caso negativo
Bloqueia o processo até a garantir de atendimento que leve a um estado seguro
Evitar a possibilidade
-
Evitar a possibilidade Vantagens da técnica
Não é necessário
Preemptar um processo
Reestabelecer o estado anterior
É menos restritivo que a técnica de eliminação
Restrições
Conhecimento prévio
O número máximo de recursos a serem requeridos
Processo avaliados devem
Ser independentes
Não requerer sincronização
Deve haver um número fixo de recursos a alocar
Nenhum processo deve sair do sistema enquanto “segura” um recurso
-
Detecção de deadlock e recuperação do sistema
-
Detecção de deadlock e recuperação Abordagem anterior
Extremamente conservadoras
Limita o acesso a recursos
Impõem restrições aos processo
Abordagem de detecção e recuperação
Disponibiliza o recurso sempre que possível
Avalia com frequência a possível ocorrência de deadlock
Realizada pela análise periódica do grafo de alocação
Frequência de avaliação pode ser ajustada
Permite determinar se há deadlock
-
Detecção de deadlock Dada o seguinte cenário
Elementos
Processos de A a G
Recursos de S a W
Uso e requisições de recursos
Processo A - Possui o recurso R, Requisita S
Processo B - Requisita T
Processo C - Requisita S
Processo D - Possui o recurso U, Requisita S e T
Processo E - Possui o recurso T, Requisita V
Processo F - Possui o recurso W, Requisita S
Processo G - Possui o recurso V, Requisita U
-
Detecção de deadlock Algoritmo de detecção de deadlock Para cada nó, execute os passos que segue
Passo 1: Inicializar uma lista vazia (L) e assinale os arcos como desmarcados
Passo 2: Insira o nó atual no final da lista (L) e analise se o nó aparece duas vezes
Se sim: há um ciclo (finaliza-se a execução do algoritmo)
Se não: ainda não foi detectado ciclo (siga para o passo 3)
Passo 3: No nó corrente, verificar se há um arco de saída desmarcado
Se sim, siga para o passo 4, senão siga para o passo 5
Passo 4 Escolha uma das saídas desmarcadas
Marque-a, siga-o para obter o novo nó, e vá para o passo 2
Passo 5 Se o nó é o inicial, então não há ciclo e o algoritmo pode ser encerrado
Se o nó não é o inicial, então o final foi alcançado
Remova-o da lista; volte ao nó anterior; marque-o como o nó atual e volta ao passo 2
-
Estratégia de Recuperação
Aborta-se a execução dos processos em deadlock
Forma mais simples de resolver um deadlock
Elimina ao menos um processo do ciclo
Salva-se cada processo em deadlock
Rollback
Armazena-se algum ponto pré-definido no código (checkpoint)
Reinicia-se os processos
o Pode-se alcançar a mesma ocorrência de deadlock
Garantindo a eliminação do deadlock
Preempções do uso dos recursos
Captura um recurso de um processo e entrega a outro
Depende da natureza do recurso
Recuperação de deadlock