sistemas operacionais - pucrsemoreno/undergraduate/cc/sisop/... · 2018. 8. 23. · evitar a...

42
Sistemas Operacionais Programação Concorrente Impasses Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno

Upload: others

Post on 28-Jan-2021

1 views

Category:

Documents


0 download

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