Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMalu Palma Beppler Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.