• Nenhum resultado encontrado

Aula10 Deadlocks

N/A
N/A
Protected

Academic year: 2021

Share "Aula10 Deadlocks"

Copied!
36
0
0

Texto

(1)

Sistemas Operacionais

(2)
(3)

Aula Passada

• Sincronismo • Seção Crítica • Semáforos • Monitores • Implementação em Java

(4)
(5)

–Trecho de uma lei (Kansas, início do século XX)

“Quando dois trens se aproximarem um do

outro, em um cruzamento, ambos deverão

parar completamente e nenhum deverá dar

partida novamente até que o outro tenha

passado”

(6)

Deadlock

Um deadlock acontece quando um processo em

espera precisa de um recurso de um outro processo também em espera para continuar.

(7)

Deadlock

• Condições necessárias para acontecer um deadlock • Exclusão mútua

• Manter e esperar • Não preempção • Espera circular

• Para acontecer um deadlock todas as quatro

(8)

Deadlock

Exclusão mútua: apenas um processo por vez pode usar um

determinado recurso

Manter e esperar: um processo com pelo menos um recurso está

esperando recursos adicionais que estão com outros processos

Não preempção: um recurso só pode ser liberado

voluntariamente pelo processo que retém, depois desse processo ter concluído a tarefa.

Espera circular: existe um conjunto {P0, P1, … , Pn} de

processos esperando, de modo que P0, aguarda um recurso retido por P1, P1 aguarda um recurso retido por P2, …, Pn-1 aguarda um recurso de Pn, que aguarda um recurso de P0.

(9)

Deadlocks

• Os deadlocks podem ser descritos por meio de um grafo de

alocação de recursos.O grafo consistem em um conjunto de arestas (A) e vértices (V).

V pode ser de dois tipos: P (Processo) ou R (Recursos)

A pode ser de dois tipos:

• Aresta de requisição: P —> R

• Um processo P requisitou uma instância do recurso R

• Aresta de atribuição: R —> P

(10)

Deadlocks

P1 P2 P3

R1 R2

(11)

Deadlocks

• Se o grafo não contém ciclos, não há deadlocks • Se o grafo contém um ciclo:

• Se há apenas uma instância por recurso, então

há deadlock

• Se existem muitas instâncias por recurso, há a

(12)

Deadlocks

P1 P2 P3

R1 R2

R3 R4

(13)

Deadlocks

P1 P2 P3

R1 R2

R3 R4

(14)

Deadlocks

P1 P2 P3 R1 R2 E agora? P4

(15)

Métodos para tratamento de

deadlocks

• Podemos lidar com o problema de deadlocks de três

maneiras:

Podemos usar um mecanismo para prevenir ou

evitar deadlocks, garantindo que o sistema nunca

vai entrar em deadlock

• Podemos permitir que o sistema entre em deadlock

e só depois detectá-lo e recuperar o sistema

Podemos ignorar o problema e fingir que os

(16)

Métodos para tratamento de

deadlocks

• A terceira solução é a mais utilizada

• O tratamento do deadlock fica a cargo do

programador dos aplicativos

• Ele deve construir soluções para que seu

programa não entre em deadlock

• Deadlocks são pouco frequentes. Sendo assim, a

(17)

Prevenção de Deadlock

• Podemos prevenir o deadlock se garantirmos que pelo

menos uma das condições não irá acontecer

• Relebrando: Para acontecer um deadlock, o sistema tem

que garantir as quatro condições:

• exclusão mútua, • manter e espera, • não preempção, • espera circular

(18)

Prevenção de Deadlock

Exclusão mútua: não deve ser requerida para recursos

compartilháveis; mas deve manter para recursos não compartilháveis

Manter e espera: é preciso garantir que, sempre que um

processo solicite um recurso, ele não mantenha outros recursos.

• O processo pode solicitar todos os recursos antes de

ser executado ou permitir que o processo solicite recursos apenas se não tiver nenhum

(19)

Prevenção de Deadlock

Não-preempção:

• se um processo que possui recursos solicitar outros

recursos que não podem ser alocados a ele

imediatamente, então todos os recursos devem ser liberados (sofrem preempção)

• os recursos que sofreram preempção são adicionados a

uma lista de recursos pelos quais o processo está esperando

• o processo só é retomado se puder alocar novamente os

(20)

Prevenção de Deadlock

Espera circular:

• Uma solução para que a espera circular nunca

aconteça é determinar uma ordem sobre todos os tipos de recursos e exigir que cada processo solicite recursos em ordem ascendente de

(21)

Evitar Deadlocks

• O problema da abordagem anterior é que ela

causa efeitos colaterais como a baixa utilização de dispositivos, throughput reduzido de sistema e

potencial paralisação dos processos.

• Um método para evitar deadlocks é exigir que os

processo forneçam informações adicionais sobre como os recursos serão solicitados.

(22)

Evitar Deadlocks

• O modelo mais simples deste algoritmo requer que

cada processo declare o número máximo recursos que serão necessários.

• Sabendo desta informação, é possível criar um

algoritmo que garanta que o sistema nunca entrará em um estado de deadlock

• Podemos fazer isso utilizando o modelo de grafos

(23)

Evitar Deadlocks

P1 P2

R1

R2

Aresta de Demarcação!

indica que um P pode solicitar R em algum momento

(24)

Evitar Deadlocks

• Vamos supor que P solicite o recurso R. O pedido só

pode ser concedido se a convenção da aresta de

pedido (P —> R) em uma aresta de atribuição (R —> P) não forme um ciclo no grafo de alocação de recursos.

• Se não existir ciclos, a alocação do recurso deixará o

sistema em um estado seguro. Se um ciclo for

encontrado, dizemos que o sistema está me um estado inseguro.

• Neste último caso, o processo P deve esperar que seus

(25)

Evitar Deadlocks

P1 P2

R1

(26)

Evitar Deadlocks

P1 P2

R1

(27)

Detecção de Deadlocks

• Se um sistema não implementa métodos para

prevenir deadlocks ou para evitar deadlocks, deve fornecer:

• Um algoritmo que examine o sistema e

determine se ocorreu um deadlock

• Um algoritmo para recuperar o sistema após o

(28)

Detecção de Deadlock

• Se cada recurso possui apenas uma instância podemos definir um algoritmo de detecção de deadlocks utilizando uma variante do grafo de

alocação de recursos, denominada de grafo de espera. • Um deadlock vai existir se e somente se o grafo de

espera possuir um ciclo.

• Para detectar deadlocks o sistema precisa manter o

grafo de espera e periodicamente chamar um algoritmo que procura um ciclo no grafo.

(29)

Detecção de Deadlock

Uma aresta Pi a Pj implica que o processo Pi está esperando o processo Pj liberar um recurso.

(30)

Detecção de Deadlock

• Quando chamar uma algoritmo de detecção?

• Essa resposta depende de dois fatores: (1) com que frequência

um deadlock tende a ocorrer e (2) quantos processo serão afetados.

• A partir daí podemos definir diferentes metodologias para chamar

o algortimo.

• Chamar toda hora implica em um custo adicional ao sistema

• Definir intervalos para que o algoritmo seja chamado

• Exemplo: Uma vez por hora ou quando o uso da CPU cair

(31)

Recuperação de um

Deadlock

• Uma vez que identificamos um deadlock, o que

fazer em seguida?

• Uma alternativa é deixar que o sistema se

recupere automaticamente do deadlock:

• Abortar um ou mais processos para

interromper a espera circular

• Fazer uma preempção de recursos de um ou

(32)

Recuperação de um

Deadlock

Término de Processos!

• Abortar todos os processo em um deadlock

• Abortar um processo de cada vez até eliminar o

ciclo de deadlock

• Ambas soluções trazem prejuízos ao sistema.

• Encerrar um processo no meio da sua execução

(33)

Recuperação de um

Deadlock

Término de Processos!

• Para o caso em que um processo é finalizado

por vez, precisamos analisar que processo escolher para encerrar

• Devemos analisar diversos fatores:

• Prioridade do processo, tempo do processo,

tempo restante, recursos utilizados, recursos restantes, etc

(34)

Recuperação de um

Deadlock

Preempção de Recursos!

• Para eliminar deadlocks utilizando essa abordagem, fazemos

preempção sucessiva de diversos recursos e repassamos esses recursos a outros processos até que o ciclo de deadlock seja

quebrado.

• Para isso precisamos levar algumas questões em consideração: • Seleção de uma vítima: que recursos e processos devem ser

submetidos a preempção?

• Rollback: O que fazer com o processo que sofreu preempção? • Starvation: evitar que sempre o recurso do mesmo processo sofra

(35)
(36)

Referências

Referências

Documentos relacionados

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os

Os substratos que demonstraram maiores IVG foram vermiculita e papel filtro, sendo que a vermiculita também propiciou maior porcentagem de germinação, indicando que esse substrato

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Segundo Cheng (2007) a casa da qualidade (planejamento do produto) é utilizada para traduzir a qualidade demandada pelos clientes em requisitos técnicos do produto

Diante dos discursos levantados por tais instituições, sejam elas, os Museus, os Institutos, ou as Faculdades, a obra de Schwarz 1993, fornece amplo conhecimento sobre a formação

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

A estabilidade do corpo docente permanente permite atribuir o conceito muito bom, segundo os parâmetros da área, para o item 2.2 (pelo menos 75% dos docentes permanentes foram

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)