21
1/21 Sistemas Operacionais Interação entre tarefas - impasses Prof. Carlos Maziero DInf UFPR, Curitiba PR Julho de 2020

Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

1/21

Sistemas OperacionaisInteração entre tarefas - impasses

Prof. Carlos Maziero

DInf UFPR, Curitiba PR

Julho de 2020

Page 2: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

2/21

Conteúdo

1 O conceito de impasse

2 Condições para um impasse

3 Grafos de alocação de recursos

4 Estratégias de tratamento

Prevenção

Impedimento

Detecção e resolução

Page 3: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

3/21

O impasse dos filósofos

p0

p1

p2

p3

p4

f0

f1f2

f3

f4

Page 4: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

4/21

Impasses

Impasse

Grupo de tarefas bloqueadas aguardando umas pelas outras.

Coordenar tarefas implica em bloquear tarefas conflitantes

Suspender algumas tarefas enquanto outras executam.

Cada recurso é associado a um semáforo.

As tarefas aguardam os semáforos para acessar osrecursos.

Essas restrições podem levar a impasses.

Page 5: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

5/21

Exemplo de impasse

Operação de transferência bancária:

1 void transferir (conta_t* contaDeb, conta_t* contaCred, int valor)2 {3 sem_down (contaDeb->lock) ; // obtém acesso a contaDeb4 sem_down (contaCred->lock) ; // obtém acesso a contCred5

6 if (contaDeb->saldo >= valor)7 {8 contaDeb->saldo -= valor ; // debita valor de contaDeb9 contaCred->saldo += valor ; // credita valor em contaCred

10 }11 sem_up (contaDeb->lock) ; // libera acesso a contaDeb12 sem_up (contaCred->lock) ; // libera acesso a contaCred13 }

Page 6: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

6/21

Exemplo de impasseDois clientes (tarefas t1 e t2) fazem transferências simultâneasentre suas contas (c1 → c2 e c2 → c1):

obtém conta c1

t1 t2

t t

lock (c1->m);

lock(c2->m);

impasse

lock(c2->m);

lock (c1->m);requer conta c2

obtém conta c2

requer conta c1

Page 7: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

7/21

Um impasse real (São Paulo SP, 2017)

Page 8: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

8/21

Condições para um impasse

Exclusão mútua : recursos acessados com exclusão mútua,gerida por semáforos ou similares.

Posse e espera : a tarefa tem um recurso e quer acessar outro.

Não-preempção : a tarefa só libera os recursos quando quiser.

Espera circular : ciclo de esperas: a tarefa t1 quer um recursoretido por t2, que quer um recurso retido por t3, que querum recurso retido por t1.

Estas quatro condições são necessárias (mas não suficientes)para a ocorrência de impasses.

Page 9: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

9/21

Grafo de alocação de recursos

Permite visualizar a alocação de recursos

Permite detectar impasses

� tarefa

� recurso

�→ � posse de um recurso por uma tarefa

(o recurso “pertence” à tarefa)

� d � requisição de um recurso por uma tarefa

(a tarefa “quer” o recurso)

• • dois recursos do mesmo tipo

Page 10: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

10/21

Impasse entre as contas bancárias

t1

t2

c1 c2

t1 quer c2

t2 tem c2t2 quer c1

t1 tem c1

Page 11: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

11/21

Impasse entre as contas bancárias

Percebe-se que as quatro condições estão presentes:

Exclusão mútua : as contas são protegidas por semáforos

Posse e espera : requer conta ci , requer conta cj

Não-preempção : conta só é liberada com sem_up(c)

Espera circular : c1 → t1 d c2 → t2 d c1

�atro condições + um recurso de cada tipo→ impasse!

Page 12: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

12/21

Impasse entre os filósofos

f0

f1f2

f3

f4

p0

p1

p2

p3

p4 f0 tem p0

f0 quer p1

f1 tem p1

f1 quer p2f2 tem p2

f2 quer p3

f3 tem p3

f3 quer p4

f4 tem p4 f4 quer p0

Page 13: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

13/21

Múltiplas instâncias de recursos

t1

t2

t3 t4

r1

• •

r2

r3 r4

Sem impasse, mesmo com t1 d r1 → t2 d r2 → t3 d r3 → t1

Page 14: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

14/21

Impasses

Estratégias para tratar de impasses:

Ignorar : impasse é um problema do programador!

Prevenir : regras de programação para evitar impasses

Impedir : monitorar o uso de recursos e impedir impasses

Detectar : detectar a ocorrência de impasses e desfazê-los

A mais usada em SOs: ignorar...

Page 15: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

15/21

Prevenção de impasses

Programar de forma a evitar as quatro condições:

Exclusão mútua:

Reduzir áreas de exclusão ao mínimoUsar técnicas alternativas, como o spoolingExemplo: acesso a impressoras em um SO

Posse e espera:

Usar um recurso de cada vezObter todos os recursos antes de iniciarExemplo: na transferência, tratar uma conta por vez

Page 16: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

16/21

Prevenção de impasses

Não-preempção:

Poder “arrancar” os recursos dos processosDifícil de implementar, pode gerar inconsistências

Espera circular:Os recursos são ordenadosAs tarefas os solicitam nessa ordemExemplo: acessar as contas segundo os números de conta

Basta quebrar uma das condições!

Page 17: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

17/21

Prevenir impasse com um saleiro!1 #define NUMFILO 52 semaphore hashi [NUMFILO] ; // palitos são semáforos (iniciam em 1)3 semaphore saleiro ; // um semáforo para o saleiro4

5 task filosofo (int i) // filósofo i (entre 0 e 4)6 {7 int dir = i ;8 int esq = (i+1) % NUMFILO] ;9

10 while (1)11 {12 meditar () ;13 down (saleiro) ; // pega saleiro14 down (hashi [dir]) ; // pega palito direito15 down (hashi [esq]) ; // pega palito esquerdo16 up (saleiro) ; // devolve saleiro17 comer () ;18 up (hashi [dir]) ; // devolve palito direito19 up (hashi [esq]) ; // devolve palito esquerdo20 }21 }

Page 18: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

18/21

Impedimento de impassesEstratégia:

Acompanhar a alocação dos recursos às tarefas e negar acessosde recursos que possam levar a situações inseguras.

Grafo de estados do sistema:

Estado: uma distribuição de recursos entre as tarefas

Aresta: uma alocação ou liberação de recursos

Estados do sistema:

Estados seguros: permitem evoluir aos demais estados

Estados inseguros: somente levam a impasses

Page 19: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

19/21

Grafo de estados do sistema

safe

unsafe

e0

start

e1 e2

e3 transfer e4 e5transfer

e6 e7 e8 e9

e10

deadlock

t1 ← c1 t2 ← c2

t1 ← c2

t2 ← c2 t1 ← c1

t2 ← c1

t1 frees c1

t1 asks c2 t2 asks c1

t2 frees c2

t1 frees c2

t2 asks c1 t1 asks c2

t2 frees c1

Page 20: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

20/21

Detecção e correção de impasses

Observar o sistema e, quando ocorrer um impasse, resolvê-lo.

Como detectar impasses?

Manter um grafo de alocação de recursos:

Atualizar a cada requisição/alocação/liberaçãoDetectar a formação de ciclos no grafoPode exigir muito processamento

Monitorar nível de atividade do sistema:

Analisar tarefas suspensas há muito tempo

Page 21: Sistemas Operacionais - Interação entre tarefas - impasseswiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Sistemas Operacionais Interação entre tarefas

21/21

Detecção e correção de impasses

Como resolver impasses?

Eliminar tarefas de modo a romper os ciclos

Eliminar a mais nova? A mais antiga? A menos prioritária?

Retroceder tarefas, retornando a um estado seguro

Técnica de rollback usada em bancos de dadosSão necessários checkpoints periódicosAlgumas operações não podem ser desfeitas

interações com o usuárioenvio de pacotes de rede