1 hiding, renomeação, composição seqüencial e refinamento alexandre mota ([email protected])

28
1 Hiding, Renomeação, Composição Seqüencial e Refinamento Alexandre Mota ([email protected])

Upload: vagner-gabeira-batista

Post on 07-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

1

Hiding, Renomeação, Composição Seqüencial e Refinamento

Alexandre Mota([email protected])

2

Hiding Seja P um processo e X um

conjunto de eventos P \ X

Comporta-se como P, com eventos de X Escondidos (invisíveis) Executados internamente, de forma

automática

3

Hiding Útil para esconder eventos e

comunicações auxiliares do sistema: Aspectos essenciais do sistema, esquecer

os detalhes internos de implementação Evitar comunicações não desejadas ou

não permitidas Garantir comunicação ponto-a-ponto:

(P [|X|] Q) \ X

4

Exemplos (a -> P)\{a} = P\{a}

(a -> P)\{b} = a -> P\{b}

5

Exemplos (a -> P [] b -> Q)\{a,b} = P\{a,b} |~| Q\{a,b}

6

Exemplos

(a -> P [] b -> Q)\{b} = (a -> P\{b} [] Q\{b}) |~| Q\{b}

7

Divergência Processo realiza seqüência infinita

de eventos internos O operador de hiding pode

introduzir divergência (livelock) P = (X.a -> X)\{a} Q = a -> Q\{a} P = P (P = (X.X)) P = div

Recursão guardada x construtiva

8

Renomeação Seja P um processo e R uma relação

entre eventos {e1 <- f1, ..., en <- fn} P[[R]]

Comporta-se como P, mas eventos ei tornam-se fi segundo R

Útil para criar vários processos similares e reusar processos

9

Renomeação Se R for uma função então

P[[R]] é obtido a partir da sintaxe de P pela renomeação dos eventos segundo R

E se for injetiva, P[[R]] oferece o evento R(a) exatamente quando P oferece a

10

Renomeação Se R for uma função então

Mas se não for injetiva, o comportamento da renomeação pode mudar :

(a -> P [] b -> Q)[[a <- b, b <- b]]

11

Renomeação Caso R não seja uma função,

Podem-se introduzir escolhas que não existiam antes:

(a -> STOP)[[a <- a, a <- b]] = (a -> STOP) [] (b -> STOP)

12

Composição Seqüencial Sejam P e Q dois processos CSP

P ; Q Comporta-se como P até que

ocorra um SKIP Neste caso, P ; Q comportar-se-á

como o processo Q

13

Composição Seqüencial Este operador é útil para dividir-se

o sistema em módulos independentes, onde nem o estado precise ser conhecido

Os processos (módulos) deverão terminar com SKIP de forma conveniente ao acoplamento desejado

14

Composição Seqüencial As seguintes propriedades são

interessantes:

SKIP ; Q = Q

STOP ; Q = STOP

15

Refinamento Trata-se de uma relação de

satisfação

P QM

T F FD

16

1. S S S (Reflexiva)2. S, T S T T S S = T (Anti-Simétrica)3. S, T, U S T T U S U (Transitiva)4. S, T S T C[S] C[T] (Monotônica)

Propriedades Importantes Relação de refinamento deve ser

uma ordem parcial:

17

Modelos Semânticos de CSP Modelos: Traces (T), Failures (F),

Failures-Divergences (FD) Poder de descrição aumenta de T para

FD Capturam-se mais aspectos

(comportamento): Não-determinismo (safety ou segurança) Deadlock Livelock

18

Igualdade e Refinamento Várias noções de refinamento:

P [ T = QP [ F = QP [ FD = Q

e várias de igualdade:P =T QP =F QP =FD Q

19

Definição Refinamento em CSP é definido a

partir da relação da Teoria dos Conjuntos

Assim P [ T = Q T(Q) T(P) P [ F = Q T(Q) T(P) e F(Q) F(P) P [ FD = Q F(Q) F(P) e D(Q)

D(P)Obs.: F(P) = F(P) { (s, X) | s D(P) }

20

Traces traces(a -> P) = {<>} U {<a>^s | s

traces(P)}

traces (c?x:A -> P) = {<>} U {<c.a>^s | aA, s traces(P[a/x])}

traces (P [] Q) = traces(P) U traces(Q)

traces (P |~| Q) = traces(P) U traces(Q)

21

Exercício 1 Mostre que os seguintes

refinamentos são válidos: P [ ] Q = P |~| Q P [ ] Q P, ou Q (a b STOP) (a STOP)

22

Failures F(STOP) = {(, X) | X } F(a P) = { (, X) | a X }

{ (a^s, X) | (s, X) F(P) } F(P |~| Q)= F(P) F(Q)

23

Exercício 2 Mostre a validade dos seguintes

refinamentos: P |~| Q P, ou Q (a b STOP) (a STOP)

24

Divergences D(STOP) = { } D(SKIP) = { } D(a P) = { a^s | s D(P) } D(P |~| Q)= D(P) D(Q)

25

Exercício 3 Mostre a validade dos seguintes

refinamentos: P |~| Q P, ou Q

26

Propriedades Clássicas Determinismo

Algoritmo próprio… Ausência de Deadlock

RUN(sigma) P Ausência de Livelock

CHAOS(sigma) P

27

Verificação de Modelo vs Refinamento Verificação de modelo consiste em:

M f Enquanto que verificação de

refinamento consiste no que já vimos anteriormente

Coincidem quando pode-se encontrar processo CSP P que foi construído para ter a propriedade f (Ex.: ausência de deadlock e livelock)

=|

28

Referências Roscoe, A.W. The Theory and

Practice of Concurrency. Prentice-Hall, 1998.

Hoare, C.A.R. Communicating Sequential Processes. Prentice-Hall, 1985.