Escolar Documentos
Profissional Documentos
Cultura Documentos
Impasses
2/36
Recursos
● Recurso pode ser qualquer dispositivo de
hardware ou um trecho de informação.
– CDRom, unidade de fita, HD, impressoras
– Tabelas em uma base de dados que precisam ser
atualizadas.
3/36
Recursos
● Não preemptível
– É um recurso que não pode ser retirado do
processo atual. Ou seja, se o processo proprietário
parasse de utilizar aquele recurso ocorreria uma
falha no sistema.
– Gravar de DVD, ler o DVD, gravar na fita, ler a fita,
etc.
4/36
Recursos
● Preemptível
– É um recurso que pode ser retirado do processo
atual. Esses recursos podem ser reutilizados,
compartilhados ou alterados para que outros
processos possam seguir trabalhando.
– Memória, HD, etc.
5/36
Aquisição de Recursos
● Alguns processos precisam garantir o acesso a
recursos para que seu funcionamento seja
correto.
● No caso de acesso a base de dados o software
SGBD tem que gerenciar o acesso a estes
recursos, já no acesso a dispositivos de
hardware o sistema tem que controlar.
6/36
Aquisição de Recursos
7/36
Aquisição de Recursos
8/36
Impasses
● Definição
– Um conjunto de processos estará em situação de
impasse se todo processo pertencente ao conjunto
estiver esperando por um evento que somente
outro processo desse mesmo conjunto poderá
fazer acontecer.
9/36
Impasses
● Condição para ocorrência de impasses
– Condição de exclusão mútua
– Condição de posse e espera
– Condição de não preempção
– Condição de espera circular
10/36
Modelagem de Impasses
● A modelagem de impasses pode ser feita
através de grafos.
– Processos → Círculos
● Uma linha saindo do processo para o recurso indica que
o processo está bloqueado esperando pelo recurso.
– Recursos → Quadrados
● Uma linha saindo de um recurso para um processo
indica que o recurso foi requisitado, está alocado e está
sendo usado pelo processo.
11/36
Modelagem de Impasses
12/36
Modelagem de Impasses
● Exemplo:
– Três processos, A, B e C, e três recursos, R, S e T.
– As requisições dos recursos se dão da seguinte
maneira.
13/36
Modelagem de Impasses
● Exemplo:
14/36
Estratégias
● Em geral existem 4 estratégias para tratarmos
impasses:
– Ignorar o problema
– Detecção e recuperação
– Anulação dinâmica por meio de alocação
cuidadosa de recursos
– Prevenção, negando estruturalmente uma das
quatro condições necessárias para gerar um
impasse.
15/36
Algoritmo do Avestruz
● É o método mais simples para evitarmos
impasses.
● A ideia é analisar quantas vezes, o tempo de
retorno e o impacto que um impasse irá causar
no nosso sistema.
16/36
Detecção e Recuperação de
Impasses
● Detecção de impasses com um recurso de cada tipo
1.Para cada nó N, realize os passos abaixo
2.Inicialize uma lista L, vazia, e adicione cada item na medida
que for passando pelos nós.
3.Insira o nó inicial na lista L e verifique se a mesma tem dois
nós iguais. Isso indica um impasse.
4.A partir do nó verifique se existe um arco de saída, se existir
vá para o passo 5, se não vá para o passo 6.
5.Escolha uma das saídas, e vá para o passo 3.
6.Se esse for o nõ inicial, não existe ciclo, termine o algoritmo.
Se não, o final foi alcançado, remova-o da lista, volte ao nó
anterior e vá para o passo 3.
17/36
Detecção e Recuperação de
Impasses
18/36
Detecção e Recuperação de
Impasses
● Detectando impasses com múltiplos recursos
de cada tipo.
– O algoritmo para detecção de impasses com
recursos múltiplos é baseado em matrizes.
● E → Vetor de recursos existentes
● C → Matriz de alocação atual
● A → Vetor de recursos disponíveis
● R → Matriz de requisições
● P → lista de processos
19/36
Detecção e Recuperação de
Impasses
● Detectando impasses com múltiplos recursos
de cada tipo.
– O algoritmo:
1. Procure um processo desmarcado, Pi, para o qual a
linha i de R seja menor ou igual a linha correspondente
de A.
2. Se esse processo for encontrado adicione a linha i de C
à correspondente de A, marque o processo e volte ao
passo 1.
3. Se não existir o processo, o algoritmo finalizará.
20/36
Detecção e Recuperação de
Impasses
● Exemplo:
– Temos três processos, e quatro classes de
recursos.
– O processo 1 está utilizando 1 scanner
– O processo 2 duas unidades de fita e um CD-Rom
– O processo 3 um plotter e dois scanners
21/36
Detecção e Recuperação de
Impasses
22/36
Recuperação de Situações de
Impasse
● Recuperação por meio de preempção.
– Em hardwares que permitem esse tipo de
operação, a preempção pode ser uma boa
alternativa para resolução de impasses.
● Recuperação por meio de retrocesso.
– É possível programar os processos para que eles
façam checkpoints, assim, quando necessário,
podemos ordenar que um processo retorne a um
estado onde ele não estava usando o hardware.
23/36
Recuperação de Situações de
Impasse
● Recuperação por meio de eliminação de
processos.
– Quando dois processos disputam um recurso, por
vezes é necessário encerrar um deles para que o
outro possa ser concluído. Em seguida o processo
parado pode ser retomado.
24/36
Evitando Impasses
● Os algoritmos principais para evitarmos
impasses são baseados no conceito de
estados seguros.
25/36
Evitando Impasses
26/36
Evitando Impasses
● Estados seguros e inseguros.
Estado Seguro
Estado Inseguro
27/36
Evitando Impasses
● O algoritmo do banqueiro para um único
recurso.
– Este algoritmo trata dos estados seguros ou
inseguros no momento em que é feita uma
requisição.
28/36
Evitando Impasses
● O algoritmo do banqueiro para múltiplos
recursos.
29/36
Prevenção de Impasses
● Condição de exclusão mútua.
– Se dois processos não conseguirem ficar com um
recurso exclusivamente para si, não existirão
impasses.
– Nem todos os processos podem trabalhar sem ter o
recurso exclusivamente para si, mas em alguns
casos podemos lançar mão da técnica de spooling.
30/36
Prevenção de Impasses
● Condição de posse e espera.
– Se pudermos impedir que processos que já tem um
recurso fiquem a espera de mais recursos,
eliminaremos os impasses.
– Uma forma de fazer com que isso ocorra é exigir
que os processos façam a requisição de todos os
recursos antes de “travá-los”.
31/36
Prevenção de Impasses
● Condição de posse e espera.
– Um problema dessa técnica é que os processos
não sabem, antecipadamente, quais recursos irão
usar, nem quando.
– Outro problema é, mesmo sabendo quais recursos
irão ser usados, não quer dizer que eles serão
usados imediatamente. Pode ser que precisemos
da fita daqui a uma hora, e esse recurso ficará
indisponível a todos durante esse tempo.
32/36
Prevenção de Impasses
● Condição de não preempção.
– A condição de preempção de um recurso pode ser
atingida virtualizando-o.
– Podemos utilizar spool ou um serviço intermediário
que faça com que a saída final de uma requisição
seja tratada por outro software e não pelo recurso
final.
33/36
Prevenção de Impasses
● Condição de espera circular.
– Podemos contornar essa condição fazendo com
que o processo só possa ter um recurso por vez.
Essa abordagem leva a mais problemas que
soluções, pois, em geral, um processo atua com
mais de um recurso.
34/36
Prevenção de Impasses
● Condição de espera circular.
– Outra abordagem é a numeração dos recursos. A
impressora seria 1, o CR-Rom seria 2, um scanner
3, etc. E o processo só pode solicitar recursos na
ordem. Assim se dois processos solicitarem
recursos eles terão que seguir a ordem pré
estabelecida.
35/36
Prevenção de Impasses
● Condição de espera circular.
– Embora a ordenação resolva o problema de
impasses ela não pode ser aplicada a todos os
casos. Dependendo do número de recursos
disponíveis, pode se tornar “caro” e impossível
determinar a ordem correta dos recursos.
36/36