A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Instituto de Computação - UFF Drinking Philosophers Algoritmos Distribuídos Professora: Lúcia Drummond.

Apresentações semelhantes


Apresentação em tema: "Instituto de Computação - UFF Drinking Philosophers Algoritmos Distribuídos Professora: Lúcia Drummond."— Transcrição da apresentação:

1 Instituto de Computação - UFF Drinking Philosophers Algoritmos Distribuídos Professora: Lúcia Drummond

2 Instituto de Computação - UFF 2 Drinking Philosophers Os nós podem acessar diferentes subconjuntos de recursos sempre que eles exigem acesso a recursos compartilhados, então passa a existir a possibilidade de que vizinhos em G acessem recursos compartilhados concorrentemente. A técnica de empregar um único garfo por aresta para assegurar acesso exclusivo aos recursos que dois vizinhos compartilham não é mais suficiente.

3 Instituto de Computação - UFF 3 Drinking Philosophers Ao invés disso, associado com todas as arestas deve existir um objeto para cada recurso que os correspondentes vizinhos compartilham. Tais objetos são garrafas.

4 Instituto de Computação - UFF 4 Algoritmo Drinking _Philosophers Variáveis thirsty i = false; holds_bottle i jk = false para todo n j Neig i e todo b k B i j ; holds_turn i j = false para todo n j Neig i ; owes_bottle i jk = false para todo n j Neig i e todo b k B i j ; needs_bottle i jk = false para todo n j Neig i e todo b k B i j ; X i =0; Y i =0;

5 Instituto de Computação - UFF 5 Algoritmo Drinking _Philosophers Algoritmo (1)Input: msg i = nil; Ação quando not thirsty e necessita-se do acesso ao recurso compartilhado: thirsty i := true; needs_bottle i jk := true para todo n j Neig i e todo b k B i j tal que acesso ao recurso que b k representa é necessário;

6 Instituto de Computação - UFF 6 Algoritmo Drinking _Philosophers para todo n j Neig i tal que existe b k B i j com needs_bootle i jk =true e holds_bottle i jk =false do begin Seja X i o subconjuntos de B i j tal que b k X i se e somente se needs_bottle i jk =true e holds_bottle i jk =false; Envie request(X i ) para todo n j ; X i; =0; end

7 Instituto de Computação - UFF 7 Algoritmo Drinking _Philosophers Algoritmo (cont) (2)Input: msg i = request(X) tal que origem i (msg i )=n j ; Ação: para todo b k X do if not thirsty i or not holds_turn i j or not needs_bottle i jk then begin holds_bottle i jk :=false; X i :=X i {b k }; if thirsty and needs_bottle i jk then Y i :=Y i {b k }; end

8 Instituto de Computação - UFF 8 Algoritmo Drinking _Philosophers else owes_bottle i jk :=true; if X i 0 then begin if Y i = 0 then Envie bottle(X i,nil) para n j ; else begin Envie bottle(X i,request(Y i )) para n j; Y i :=0; end X i :=0; end

9 Instituto de Computação - UFF 9 Algoritmo Drinking _Philosophers Algoritmo (cont) (3)Input: msg i = bottle(X,t) tal que origem i (msg i )=n j ; Ação: holds_bottle i jk := true para todo b k X; if t = turn then holds_turn i j := true; if t = request(Y) then owes_bottle i jk :=true para todo b k Y; if holds_bottle i kl para todo n k Neig i e todo b l B i k then

10 Instituto de Computação - UFF 10 Algoritmo Drinking _Philosophers begin acessa recursos compartilhados; thirsty i :=false; para todo n k Neig i do if holds_turn i k then begin holds_turn i k :=false; para todo b l B i k do if owes_bottle i kl then begin owes_bottle i kl :=false; holds_bottle i kl :=false; X i :=X i {b l }; end

11 Instituto de Computação - UFF 11 Algoritmo Drinking _Philosophers if X i 0 then begin Envie bottle(X i,turn) para n k ; X i :=0; end else Envie turn para n k ; end

12 Instituto de Computação - UFF 12 Algoritmo Drinking _Philosophers Algoritmo (cont) (4)Input: msg i = turn tal que origem i (msg i )=n j ; Ação: holds_turn i j := true;


Carregar ppt "Instituto de Computação - UFF Drinking Philosophers Algoritmos Distribuídos Professora: Lúcia Drummond."

Apresentações semelhantes


Anúncios Google