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 Operadores Básicos.

Apresentações semelhantes


Apresentação em tema: "Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operadores Básicos."— Transcrição da apresentação:

1 Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operadores Básicos

2 CSP é uma linguagem para definição e especificação de processos Processos correspondem a sistemas, componentes de um sistema distribuído Processos comunicam-se com outros Processos

3 Realizada através de eventos de comunicação: –a chamada de um método atômico –o início ou fim da chamada de um método não atômico –a notificação de um evento da GUI ou de algum periférico Eventos são atômicos, instantâneos Comunicação

4 A comunicação só ocorre através da sincronização entre dois ou mais processos: –o mesmo evento ocorre em dois processos ao mesmo tempo O alfabeto de um processo é o conjunto de todos os seus eventos: –tem que ser escolhido com cuidado Comunicação

5 O processo que não faz nada: –nunca se comunica com outros processos –não oferece nenhum evento de comunicação Representa um sistema (processo) –em deadlock, ou –sem funcionar STOP

6 Operador para construir processos: a -> P dado um evento a e um processo P Oferece o evento a e espera, indefinidamente, até que haja uma comunicação Depois da comunicação, comporta-se como P Formas inválidas: a -> b, P -> Q Prefixo

7 Definindo Processos Declarando os eventos ou canais de comunicação: channel up, down Definindo (nomeando) um processo cujo alfabeto é determinado pelos eventos acima: P0 = up -> down -> up -> down -> STOP

8 P1 = up -> down -> P1 P2 = up -> down -> up -> down -> P2 Através de equações recursivas (guardadas) Utilizadas para processos que –tem um comportamento repetitivo –normalmente não terminam Objetos em Java, por exemplo Definições Recursivas

9 Definições (equações) diferentes, processos iguais Operador de recursão:  X.F(X) representa “o processo” definido por P = F(P) para uma expressão F (guardada) P = F(P) equivale a P =  X.F(X) Processo versus Definição do Processo

10 Pu = up -> Pd Pd = down -> Pu Processo versus Sistema: –dois processos, um único sistema –um processo não “chama” um outro processo, mas “comporta-se como” um outro processo Definições Mutuamente Recursivas

11 Operador para construir processos: (a1 -> P1 |... | an -> Pn) dado eventos diferentes a1,..., an, e processos P1,..., Pn Processos que oferecem –alternativas de comportamento –escolha de eventos Forma inválida: (P | Q | R) Alternativa Guardada

12 É uma abreviação para o operador de escolha externa: (a -> P | b -> Q | c -> R) corresponde a (a -> P [] b -> Q) [] c -> R Exemplo: Alternativa Guardada channel a,b B0 = a -> B0 [] b -> B1 B1 = a -> B0 [] b -> STOP

13 Todo processo em CSP corresponde a uma “máquina de estados” Com STOP, prefixo, recursão, e alternativa guardada expressamos todas as máquinas de estados finitas e determinísticas Ferramentas de model checking, como FDR, verificam processos com um número finito de estados Máquinas de Estados e CSP

14 Corresponde a uma família, possivelmente infinita, de definições: COUNT(n)= if n==0 then (up -> COUNT(1)) else (up -> COUNT(n+1) [] down -> COUNT(n-1)) Definições Parametrizadas

15 O número de estados pode ser limitado: LCOUNT(L,n) = (n LCOUNT(L,n+1)) [](n>0 & down -> LCOUNT(L,n-1)) onde (cond & P) corresponde a if cond then P else STOP Definições Parametrizadas

16 Operador para construir processos: ?x:A -> P(x) dado uma variável x, um conjunto de eventos A, e um processo P(x) Generalização da alternativa guardada ( A pode ser infinito) STOP equivale a ?x:{} -> P(x) Escolha Prefixada

17 É uma abreviação para o operador indexado de escolha externa: ?x:A -> P(x) corresponde a []x:A @ x -> P(x) Exemplo: Sigma = {a,b,up,down} REPEAT = [] x:Sigma @ x -> x -> REPEAT Escolha Prefixada

18 Canais tipados, com comunicação de dados através dos mesmos channel init:Int NUM = {0..100} INIT = init?x:NUM -> LCOUNT(100,x) Família de eventos: c:T = {c.t | t  T} Eventos Compostos

19 DATA = {0,1} channel left, right:DATA COPY = left?x -> right!x -> COPY Binf(s) = if s==<> then left?x -> Binf( ) else (left?x -> Binf(s^ ) []right!head(s) -> Binf(tail(s))) Eventos Compostos

20 ATM1 = incard?c -> pin.fpin(c) -> req?n -> dispense!n -> outcard.c -> channel incard, outcard:CARD channel pin:PINs channel req, dispense:WA Exemplo

21 CARD = {0..9} datatype pinnumbers = PIN.Int fpin(c) = PIN.c PINs = {fpin(c) | c <- CARD} WA = {10,20,30,40,50} Exemplo

22 Do livro texto –Essenciais: 1.1.1, 1.1.2, 1.1.3 –Opcionais: 1.1.5, 1.1.4 Exercícios


Carregar ppt "Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operadores Básicos."

Apresentações semelhantes


Anúncios Google