impasses cap 06 (ii unidade)

38
Sistemas operacionais modernos Terceira edição ANDREW S. TANENBAUM Capítulo 6 Impasses Adaptado por: Prof. Esp. Rodrigo Ronner [email protected] http://rodrigoronner.blogspot.com

Upload: faculdade-mater-christi

Post on 09-Jul-2015

1.114 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Impasses cap 06 (ii unidade)

Sistemas operacionais modernos Terceira edição

ANDREW S. TANENBAUM

Capítulo 6

Impasses

Adaptado por:

Prof. Esp. Rodrigo Ronner

[email protected] http://rodrigoronner.blogspot.com

Page 2: Impasses cap 06 (ii unidade)

Deadlocks

• Situação onde dois ou mais processos estão esperando por um evento que só pode ser gerado por algum dos mesmos processos em espera.

• Ou seja:

• Cada processo de um conjunto em deadlock está esperando por um recurso que foi entregue a outro processo do mesmo conjunto.

Page 3: Impasses cap 06 (ii unidade)

Deadlocks

• Em alguns casos pode ocorrer a seguinte situação: um processo solicita um determinado recurso e este não está disponível no momento.

• Quando isso acontece o processo entra para o estado de espera (bloqueado).

• Em algumas situações é possível que estes processos nunca mais mudem de estado, pois os recursos que eles necessitam podem estar sendo mantidos por outros processos em espera. Essa situação

é chamada de deadlock ou impasses.

“Um conjunto de processos está em estado de deadlock quando todos os processos no conjunto estão esperando por um evento que só pode ser causado por outro processo do conjunto.”

Page 4: Impasses cap 06 (ii unidade)

Por exemplo, que dois processos queiram cada um gravar em CD um documento obtido de um scanner:

• O processo A solicita permissão para usar o scanner e é autorizado;

• O processo B, que é programado diferentemente, solicita primeiro permissão para usar o gravador de CD e também é autorizado;

• Então, o Processo A pede para usar o gravador de CD, mas a solicitação lhe é negada até que o processo B o libere;

• Infelizmente, em vez de liberar o gravador de CD, o processo B pede para usar o scanner;

• Nesse ponto, ambos os Processos ficam bloqueados e assim permanecerão para sempre;

• Essa situação é denominada deadlock.

Deadlocks

Page 5: Impasses cap 06 (ii unidade)

Deadlocks

• A ideia de impasse ou deadlock pode ser mais facilmente entendida se fizermos uma analogia com uma escada de um prédio utilizada para casos de incêndio.

• Apesar de ter sido construída como uma opção de fuga em caso de incêndio, as pessoas que trabalham no prédio muitas vezes preferem utilizar a escada ao invés dos elevadores.

• No entanto, há espaço apenas para uma pessoa em cada degrau. Logo, o tráfego pela escada vai bem até que 2 pessoas se cruzam.

• Por outro lado, existe uma plataforma em cada um dos andares que suporta várias pessoas.

• Os problemas acontecem no momento em que uma pessoa que está subindo a escada encontra outra que está descendo e ambas se recusam a retroceder até a plataforma.

• Esta situação permanecerá gerando um impasse ou deadlock.

Page 6: Impasses cap 06 (ii unidade)

Exemplo para Atravessar uma Ponte

Trafégo somente em uma direção

Cada seção da ponte pode ser vista como um recurso

Se ocorre deadlock, pode ser resolvido se um carro voltar (preempção de recursos e rollback)

Diversos carros podem ter que voltar se ocorre deadlock

Pode causar starvation (Quando um processo nunca é executado ("morre de fome"), pois processos de prioridade maior sempre o impedem de ser executado.)

Deadlocks

Page 7: Impasses cap 06 (ii unidade)

Deadlocks: Recursos

É qualquer objeto ao qual deva ser dado acesso exclusivo para cada processo. Recursos podem ser dispositivos de hardware ou arquivo. Para a utilização de um recurso, o processo deve realizar a seguinte sequência:

• Requisitar o recurso;

• Utilizar o recurso ;

• Liberar o recurso.

Se um recurso não estiver disponível quando for requisitado, o processo que o requisitou é forçado a aguardar, sendo dois métodos utilizados:

1) O processo é bloqueado e acordado quando o recurso estiver disponível;

2) é enviado um código de erro ao processo indicando que a requisição falhou sendo, então, que o próprio processo deve decidir a ação a tomar (ex: aguardar algum tempo e pedir novamente).

Page 8: Impasses cap 06 (ii unidade)

Deadlocks: Recursos preemptíveis e não preemptíveis

• Preemptível é aquele que pode ser retirado do processo proprietário sem nenhum prejuízo;

• Recurso Não Preemptível: é aquele que não pode ser retirado do atual Processo proprietário sem que a computação apresente falha.

Se um Processo começou a gravar um CD-ROM, retirar dele repentinamente o gravador de CD e dar a um outro processo resultará em um CD com erros . Gravadores de CD são recursos que não podem ser tomados a qualquer momento, isto é, não são preemptíveis.

Page 9: Impasses cap 06 (ii unidade)

Deadlocks: Condições Para ocorrência de Deadlock

• Condições necessárias:

• Exclusão Mútua;

• Posse e Espera;

• Não-Preempção;

• Espera Circular.

Obs: Todas as condições necessárias devem estar presentes para que ocorra. Se faltar uma delas, não ocorrerá deadlock.

Page 10: Impasses cap 06 (ii unidade)

• Exclusão mútua: Apenas um processo por vez pode usar o recurso.

• Posse e Espera: Processos que, em determinado instante, retêm recurso concedido anteriormente podem requisitar novos recursos.

• Não-preempção: Os recursos só podem ser liberados voluntariamente pelo processo que o mantém.

• Espera circular: Dado um conjunto de processos {P1, P2, ..., Pn} em espera, P1 está esperando por um recurso mantido por P2; P2 está esperando um recurso mantido por P3 e assim sucessivamente, até que Pn esteja esperando por um recurso alocado por P1.

Deadlocks: Condições para ocorrência de

Deadlock

Page 11: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

• Exclusão Mútua.

• Solução:

• Sem exclusão mútua, não existem deadlocks.

Por quê?

• Quando possível de ser realizada, a eliminação das condições de exclusão mútua resolve os problemas de deadlock.

• Problemas: • Risco de Inconsistência no compartilhamento de recursos.

Page 12: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

• Posse e Espera.

• Solução: • Alocação de todos os recursos necessários antes do

inicio dos processos.

• Problemas: • Desperdício dos recursos do sistema.

• Impossibilidade de alocação dinâmica de recursos.

• Risco de starvation.

Muitos processos só sabem quanto recursos vão precisar

somente após sua execução.

Page 13: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

• Não-Preempção.

• Solução:

• Retirada do recurso de um processo quando for requisitado por outro processo.

• Problemas: • Pode fazer o processo perder totalmente o processamento

realizado.

• Risco de starvation.

Page 14: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

• Espera Circular

• Solução: • Limitação da posse de um recurso por vez.

• Se um processo necessitar de outro recurso, deve liberar qualquer recurso já alocado.

• Fornecer uma numeração global de todos os recursos. Processos podem requisitar recursos sempre que necessário, mas todas as solicitações devem ser feitas em ordem numérica. Ex: 1 – Impressora, 2 – Scanner, 3 – Plotter, 4 – Unidade Fita, 5 – Unidade CD-ROM.

• Problemas:

• Restrição no grau de compartilhamento e processamento dos processos.

Page 15: Impasses cap 06 (ii unidade)

Deadlocks: Modelagem de Deadlock

• Estratégias para Solução de Deadlocks:

• Ignorar;

• Detectar e Tratar;

• Prevenir.

Page 16: Impasses cap 06 (ii unidade)

Em geral, podemos utilizar 3 métodos para tratar o problema de Deadlocks:

• 1. podemos usar um protocolo para garantir que o sistema nunca entre em estado de deadlock: PREVENÇÃO (O Sistema operacional deve eliminar uma das 4 condições para que o deadlock ocorra)

• 2. podemos permitir que o sistema entre em deadlock e se recupere: DETECÇÃO e RECUPERAÇÃO.

• 3. podemos ignorar o problema (Algoritmo do avestruz). Esta opção é utilizada pela maioria dos sistemas operacionais, incluindo o UNIX.

• Para garantir que um sistema nunca entre em deadlock é possível usar um esquema de prevenção de Deadlocks ou de impedimento de Deadlocks. Esta prevenção é realizada através de um conjunto de métodos que garantem que pelo menos uma das situações necessárias para que um deadlock aconteça seja falha. Basicamente, isso é feito limitando a forma como as solicitações de recursos acontecem.

Deadlocks: Modelagem de Deadlock

Page 17: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

• Todas as soluções anteriores são limitadas.

• Alternativa mais utilizada: • Algoritmo do Banqueiro (Dijkstra – 1965)

• Exige que todos os processos informem o número máximo de cada tipo de recurso necessário a sua execução.

• Assim é possível definir: • O estado de alocação de um recurso.

• Número de recursos alocados e disponíveis.

• O número máximo de processos que necessitem desses recursos.

• Problemas: • Necessidade de definir o número fixo de processos ativos e

recursos disponíveis.

Page 18: Impasses cap 06 (ii unidade)

Deadlocks: Evitação Dinâmica de Deadlock

• Procura-se evitar o deadlock sem impor restrições aos processos, isto é possível desde que alguma informação sobre a utilização de recursos pelo processo seja disponível antecipadamente ao SO. Vamos analisar maneiras de se conseguir isso:

• Algoritmo do Banqueiro para um único Recurso: usado para evitar deadlocks consiste em simular as decisões de um banqueiro no empréstimo de certa quantia de dinheiro sujeita a certas condições.

• No exemplo próximo slide temos 4 clientes (A B C D) cada um especificou o número máximo de crédito que precisará, mas eles não precisam de todas elas imediatamente, de forma que o banqueiro reservou 10 unidades para atender todos os pedidos (totalizando 32 unidades).

Page 19: Impasses cap 06 (ii unidade)

Deadlocks: Prevenção de Deadlocks

Chamamos de estado, a situação dos empréstimos e dos recursos ainda disponíveis em um

dado momento.

Algoritmo do Banqueiro para um único Recurso:

Page 20: Impasses cap 06 (ii unidade)

O exemplo ao lado demonstra um estado seguro, pois existe uma sequência de outros estados que leva a que todos os clientes recebam seus empréstimos até seus limites de crédito.

Disponível:2

Algoritmo do Banqueiro para um único Recurso:

Deadlocks: Prevenção de Deadlocks

Page 21: Impasses cap 06 (ii unidade)

• O banqueiro pode emprestar 2 unidades à C; pegar de volta (4) emprestar à B, pegar as 5 unidades de volta e emprestar à A, pegar as 6 unidades de volta e emprestar 3 delas à D, pegando então as 7 unidades de volta, garantindo o atendimento a todos os clientes.

Questão???

Se por exemplo o cliente B fizesse um pedido de mais uma unidade (2) teríamos um estado não seguro?

• Não há forma do banqueiro garantir o atendimento de todos os pedidos, podendo vir a gerar um deadlock. Ainda não haverá um deadlock, pois os valores de máximo não precisam necessariamente ser atingido.

• Por exemplo, o cliente D pode decidir que não precisa mais de novos recursos e devolver os 4 que pediu, voltando novamente a uma situação segura.

• Mas o banqueiro não pode contar com isso, então para cada pedido que chega, o banqueiro deve verificar se conceder o mesmo leva a uma situação segura, verificando se o disponível é suficiente para atender o cliente mais próximo de seu máximo.

• Se for, finge que esse cliente já devolveu tudo que possuía, marca o mesmo como terminado e verifica se pode atender o cliente mais próximo do máximo entre os que restam. Se ele puder levar a bom termo esse processo, atendendo todos os clientes então o estado é seguro.

Algoritmo do Banqueiro para um único Recurso:

Deadlocks: Prevenção de Deadlocks

Page 22: Impasses cap 06 (ii unidade)

Exercícios 1. O que é deadlock, quais as condições para o acontecimento desses impasses e quais as soluções possíveis?

2. Pesquise e descreva o mecanismo (ideia) de funcionamento do algoritmo do banqueiro de Dijkstra proposto para evitar deadlocks. Além disso, cite as deficiências presentes nesse algoritmo.

3. Um estado inseguro é um estado de deadlock?

4. Descreva as restrições que o algoritmo do banqueiro impõe aos processos.

5. Por que a prevenção de deadlock não é uma preocupação primária para muitos sistemas operacionais?

6. Por que a recuperação de deadlock é um problema tão difícil?

7. Explique o são Recursos preemptíveis e não preemptíveis?

8. Explique as diferenças entre impasses e condição de inanição (starvation)?

Page 23: Impasses cap 06 (ii unidade)

Gerenciamento de processos

Page 24: Impasses cap 06 (ii unidade)

Políticas de escalonamento (agendamento) •SO escolhe qual processo da fila de PRONTOS irá executar

•Despachante designa um processador a um dado processo

•Política de escalonamento (ou disciplina de escalonamento):

–Critério do SO para escolher o processo que executará

Page 25: Impasses cap 06 (ii unidade)

Políticas de escalonamento (agendamento)

Forte influência no desempenho global do SO

•Deve garantir: justiça, previsibilidade e escalabilidade

•Deve considerar o comportamento de um processo

–Processos CPU-Bound x I/O-Bound

–Processos Em Lote x Interativo

Objetivos do escalonamento (em relação aos processos)

•Maximizar: throughput (total de processos terminados na unidade de tempo)

•Minimizar: turnaround (tempo da criação até o término do processo)

•Maximizar: taxa de utilização de CPU (tempo total de ocupação da CPU)

•Minimizar: tempo de resposta (tempo da criação até o inicio da execução)

•Minimizar: tempo de espera (soma dos tempos na fila de prontos)

•Minimizar: tempo de resposta em processos interativos

•Maximizar: utilização dos recursos (HW ou SW)

•Minimizar: a sobrecarga de gerenciamento do SO

•Favorecer: rotinas de maior prioridade e importância

Page 26: Impasses cap 06 (ii unidade)

Escalonamento

Page 27: Impasses cap 06 (ii unidade)

Poderá ser classificada como

–Preemptiva

–Não-preemptiva

•Não-preemptiva (cooperativo)

–SO não pode interromper um processo

–Processo executa até concluir (ou parar voluntariamente)

•Preemptiva:

–SO pode interromper um processo a qualquer instante

–Para executar outro processo (chaveamento de contexto)

•Há vantagens e desvantagens em ambas

Políticas de escalonamento (agendamento)

Page 28: Impasses cap 06 (ii unidade)

Políticas de escalonamento com prioridades

•Permite quantificar a importância relativa dos processos

•Mecanismos de prioridades são de dois tipos:

–Prioridade estática

–Prioridade dinâmica

•Prioridade estática:

–Não varia ao longo da execução do processo

–Fácil de implementar

•Prioridade dinâmica (mais inteligente)

–Varia ao longo da execução do processo

–Permite uma maior responsividade à mudanças no ambiente

–Exemplos: Técnica de aging, algoritmo HRRN

•Inversão de prioridade:

–SO aumenta a prioridade de um processo menos importante

–Diminuir sobrecarga ou liberar recursos para outro processo

Page 29: Impasses cap 06 (ii unidade)

Políticas de escalonamento: critérios Tentam implementar “justiça” na escolha dos processos

•Primeiros SO eram colaborativos: ineficientes!

–Exemplo: Windows 95 (multitarefa cooperativa)

–Processo rodava o tempo que desejava

•Regra geral:

1º: Processo que chega vai para o final da fila pronto

2º: Fila é rearranjada conforme o critério de escalonamento

•Atualmente, na prática, algoritmos usados nos SO:

–Combinam dois ou mais critérios e são adaptativos

–Variam dinamicamente conforme os estados dos processos

Page 30: Impasses cap 06 (ii unidade)

FIFO: First In First Out

Critério: ordem de chegada

•Não-preemptivo (processo executa enquanto quiser)

•Vantagens

–Justo: atende pela ordem de chegada

–Impede adiamento indefinido

–Fácil de implementar

•Desvantagens

–Processos longos fazem os curtos esperarem muito

–Não se mostra eficiente para processos interativos

–Não considera a importância de uma tarefa

Page 31: Impasses cap 06 (ii unidade)

SPF: Shortest Process First

Critério: tempo de execução restante (burst): menor primeiro

•Não-preemptivo

•Vantagens

–Favorece os processos mais curtos

–Aumenta o rendimento (throughput)

–Menor tempo médio de espera

•Desvantagens

–Baseado em estimativas de tempo

–Maior variância no tempo de espera (+ imprevisibilidade)

–Não impede o adiamento indefinido

Page 32: Impasses cap 06 (ii unidade)

SRT: Shortest Remaining Time

Critério: tempo de execução restante (burst): menor primeiro

•Preemptivo (se chegar processo de menor burst)

•Versão preemptiva do SPF

•Vantagens

–Busca minimizar tempo de espera

•Desvantagens

–Baseado em estimativas de tempo

–Gera sobrecarga desnecessária nas troca de contexto

–Usado em SO antigos (para processamento em lote)

Page 33: Impasses cap 06 (ii unidade)

RR: Round Robin (alternância circular)

Critério: ordem de chegada (como no FIFO)

•Preemptivo (por quantum de tempo)

•Vantagens

–Efetivo com processos interativos

–Impede adiamento indefinido

•Desvantagens

–Mais complexo que FIFO

–Adiciona sobrecarga no chaveamento de contexto

Page 34: Impasses cap 06 (ii unidade)

por Prioridades (Filas de Prioridades)

Critério: maior prioridade primeiro

•Preemptivo (por tempo e/ou prioridade de execução)

•Prioridade por ser fixa ou dinâmica

•Agrupa processos em filas de prioridades decrescentes

–Filas mais altas são executadas primeiro (na totalidade)

–Em cada fila, aplica-se RR (Round Robin)

Page 35: Impasses cap 06 (ii unidade)

Ainda Existem:

• Filas Múltiplas (multinível com feedback)

• Fração Justa (Fair-share)

• HRRN: Highest Response Rate Next

Page 36: Impasses cap 06 (ii unidade)

Outras políticas de escalonamento

• •Escalonamento Garantido

• –Cumpre promessas feitas a usuários (% alocação de CPU)

• •Escalonamento por Loteria

• –SO distribui tokens (fichas) numerados entre os processos

• –Escalonador sorteia um número aleatório

• –Processos com mais tokens têm mais chance de escolha

• •Vantagens

• –Altamente responsivo (ao número de tokens distribuídos)

• –Ideal para processos cooperativos (doação de tokens)

Page 37: Impasses cap 06 (ii unidade)

Escalonamento de Tempo Real •Ocorre em SO de tempo real

•Prioriza os processos em detrimento do próprio SO

•Busca produzir resultados em tempos determinados

•Divide-se em 2 tipos

–Crítico: prazos devem ser rigorosamente cumpridos

–Não-crítico: descumprimentos de prazo são tolerados

Page 38: Impasses cap 06 (ii unidade)

Resumo: Políticas de Escalonamento