Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMiguel De Lima Alterado mais de 9 anos atrás
1
©André Santos, 2000 Concorrência e Sincronização André Santos CIn-UFPE Concorrência
2
©André Santos, 2000 Notação: Declarações type days = (SUN,MON,...,SAT) var i : int := 0, x : real, s : string(10) var forks[1:5]:bool := ([5] false) type student = rec (name:string(30) age : int classes[1:5] : string(15))
3
©André Santos, 2000 Notação: Statements skip vector[1] := n + 2 v1 :=: v2 x := x+1; y := y-1 if B1 -> S1 []... [] Bn -> Sn fi
4
©André Santos, 2000 Notação: Statements do B1 -> S1 []... [] Bn -> Sn od MDC: x := X; y := Y do x > y -> x := x – y [] y > x -> y := y – x od
5
©André Santos, 2000 Notação: Statements fa i:=1 to n -> vector[i]:=0 af procedure inc (var x:int) x := x + 1 end
6
©André Santos, 2000 Notação: Concorrência co S1 //... // Sn oc x := 0; y := 0 co x:= x + 1 // y:= y + 1 oc z := x + y co i := 1 to n -> a[i]:=0 oc
7
©André Santos, 2000 Notação: Concorrência var a[1:n], b[1:n] : int Largest:: var max:int max:=a[1] fa j:=2 to n st max max := a[j] af
8
©André Santos, 2000 Notação: Concorrência Sum[i:1..n]:: b[i] := a[1] fa j:=2 to i -> b[i] := b[i] + a[j] af
9
©André Santos, 2000 Políticas de Escalonamento e Fairness n Várias das propriedades de liveness dependem de fairness. n O escalonamento se preocupa em como garantir que processos tenham chance de prosseguir, independentemente das ações dos demais processos. A existência de várias ações elegíveis fazem com que uma política de escalonamento seja usada para definir qual será executada.
10
©André Santos, 2000 Atomicidade de fina granularidade n Ação atômica faz uma transformação indivisível no estado. n Qualquer estado intermediário na implementação da ação deve ser invisível para os outros processos. n Ação atômica de fina granularidade é implementada diretamente pelo hardware em que o programa concorrente executa.
11
©André Santos, 2000 Exemplo: atribuição n y:=0; z:=0 co x := y+z // y :=1; z:=2 oc n x = 0,1,2 ou 3?
12
©André Santos, 2000 Assumir nos exemplos n Valores de tipos básicos são lidos e escritos como uma ação atômica n Valores são manipulados carregando-os em registros, executando operações e depois guardando os resultados na memória. n Cada processo tem seu conjunto de registros (chaveamento de contexto) n Resultados intermediários são guardados em registros ou em memória.
13
©André Santos, 2000 Especificando sincronização n Objetivo: possibilitar criação de ações atômicas de maior granularidade. n Exemplo: modificação simultânea em um banco de dados S> 0) -> s := s-1>
14
©André Santos, 2000 Especificando sincronização Exclusão mútua Sincronização de condição 0> n Ação atômica incondicional x condicional
15
©André Santos, 2000 Políticas de Escalonamento e Fairness Exemplo: var continue := true Loop:: do continue -> skip od Stop:: continue := False n O que acontece se o escalonador faz o chaveamento de contexto (context switch) apenas quando um processo termina ou fica em espera?
16
©André Santos, 2000 Unconditional Fairness n Uma política de escalonamento é incondicionalmente justa se toda ação atômica incondicional que é elegível é executada em algum momento. n Para o exemplo anterior, round-robin ou execução paralela em multiprocessadores seria incondicionalmente justa.
17
©André Santos, 2000 Weak Fairness n Na presença de ações atômicas condicionais, é necessário hipóteses mais fortes para garantir que os processos vão progredir. n Uma política de escalonamento é fracamente justa se ela é incondicionalmente justa e toda ação atômica condicional elegível é executada em algum momento, assumindo que sua guarda se torne verdadeira e não seja subsequentemente mudada para falso por outro processo.
18
©André Santos, 2000 Weak Fairness n Round-robin e timeslicing são fracamente justas. n O processo em algum momento verá que sua condição de espera se tornou verdadeira.
19
©André Santos, 2000 Strong Fairness n Se a guarda pode mudar - de falsa para verdadeira e novamente para falsa – enquanto um processo espera. n Uma política de escalonamento é fortemente justa se ela é incondicionalmente justa e toda ação atômica condicional elegível é executada em algum momento, assumindo que a guarda é infinitamente frequentemente verdadeira.
20
©André Santos, 2000 Strong Fairness Exemplo: var continue := true, try := false; Loop:: do continue -> try := true; try := false od Stop:: continue := false>
21
©André Santos, 2000 Strong Fairness n De forma geral não é viável na prática: Alternar a cada instrução Escalonador de um multiprocessador n Não é fortemente justo: Round-robin e timeslicing
22
©André Santos, 2000 Strong Fairness Instâncias específicas: 0) -> s := s - 1> n 2 processos de espera, demais incrementam s n Escalonador FCFS (First Come First Served)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.