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

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

Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operador para Esconder Eventos.

Apresentações semelhantes


Apresentação em tema: "Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operador para Esconder Eventos."— Transcrição da apresentação:

1 Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operador para Esconder Eventos

2 Operador para construir processos: P\X dado um processo P e um conjunto de eventos X P\X comporta-se como P exceto pelo fato de que os eventos em X –não podem ser observados, são escondidos –são executados internamente, de forma automática Hiding

3 Útil para esconder eventos e comunicações auxiliares do sistema: –concentrar entendimento nos aspectos essenciais do sistema, esquecer os detalhes internos da implementação –evitar comunicações não desejadas ou não permitidas –garantir comunicação ponto-a-ponto: (P [|X|] Q)\X (P [X||Y|] Q)\(X  Y) Hiding

4 COPY'(a,b) = a?x -> b!x -> COPY'(a,b) BCHAIN(N) = || i:{0..N-1} @ [{|dd.i,dd.i+1|}] COPY'(dd.i,dd.i+1) HCHAIN(N) = BCHAIN(N)\{|dd.i | i <- {1..N-1}|} Exemplo Para funcionar como um buffer!

5 BN(a,b,N,s) = #s BN(a,b,N,s^ ) [] #s>0 & b!head(s) -> BN(a,b,N,tail(s)) BN(dd.0,dd.5,5,<>) [= HCHAIN(5) HCHAIN(6) [= BN(dd.0,dd.6,6,<>) Exemplo Equivalente? E BCHAIN ?

6 (P |~| Q)\X = (P\X) |~| (Q\X) (P\Y)\X = P\(X  Y) (P\Y)\X = (P\X)\Y P\{} = P (a -> P)\X = P\X (se a  X) = a->(P\X) (se a  X) Leis

7 (a -> P)\{a} = P\{a} (a -> P)\{b} = a -> P\{b} (a -> P [] b -> Q)\{a,b} = P\{a,b} |~| Q\{a,b} (a -> P [] b -> Q)\{b} = (a -> P\{b} [] Q\{b}) |~| Q\{b} Processos com e sem restrição de visibilidade

8 (c?x:A -> P)\X = if X  A={} then c?x:A -> (P\X) else ( (c?x:(A\X) -> (P\X)) [] (|~| {P(a)\X |a  X  A}) ) |~| (|~| {P(a)\X |a  X  A}) Processos com e sem restrição de visibilidade

9 Exemplo ATM2 = incard?c -> pin.fpin(c) -> req?n -> ((dispense!n -> outcard.c -> ATM2) |~| (refuse -> (ATM2 |~| outcard.c -> ATM2))) ATMref(n) = (n ATMref(Max) [] incard?c -> pin.fpin(c) -> req?w -> (if w<=n then dispense!w -> outcard.c -> ATMref(n-w) else refuse -> outcard.c -> ATMref(n) )

10 Exemplo ? ATM2 [= ATMref(0) ? ATM2 [= ATMref(0)\{refill} ? ATMref(0)\{refill} [= ATM2 ? ATMref(0) [= ATM2 ATMref(0) é determinística ATMref(0)\{refill} é não-determinística

11 Processo realiza seqüência infinita de eventos internos O operador de hiding pode introduzir divergência ou livelock: P = (  X.a -> X)\{a} Q = a -> Q\{a} P = P (P = (  X.X)) P = div Divergência Recursão guardada x construtiva

12 (P [|X|] Q)\Z = (P\Z) [|X|] (Q\Z) ( se X  Z={}) (P [X||Y] Q)\Z = (P\Z  X)[X||Y](Q\Z  Y) ( se X  Y  Z={}) Leis

13 traces(P\X) = { s\X | s  traces(P) } s\X denota s  (Events\X) Traces

14 Do livro texto –Essenciais: 3.1.1 –Opcionais: 3.1.2 Exercícios


Carregar ppt "Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operador para Esconder Eventos."

Apresentações semelhantes


Anúncios Google