![Page 1: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/1.jpg)
EVENTO, COMUNICAÇÃO, EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E OPERADORES BÁSICOS PARA PROJETO DE PROCESSOS
Alexandre Mota & Augusto Sampaio
![Page 2: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/2.jpg)
CSP
Concebida por Tony Hoare [85]
Atualizada por Bill Roscoe [97] para fins de automação (Verificação de Modelos) FDR (Failures-Divergences Refinement) FDR (Failures-Divergences Refinement)
Foi projetada visando modelar sistemasconcorrentes/distribuídos de forma simples e elegante
![Page 3: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/3.jpg)
Elementos básicos de CSP
A linguagem é composta por: Eventos (canais)
Processos (equações)
Operadores sobre processos e/ou eventos Operadores sobre processos e/ou eventos
Estruturas de dados baseadas no paradigma funcional
Por isto é considerada uma álgebra de processos
![Page 4: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/4.jpg)
Processos
Processos correspondem a componentes de um sistema distribuído
Cada processo possui seu próprio estado Cada processo possui seu próprio estado Semelhante a um objeto
Processos comunicam-se com outros
![Page 5: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/5.jpg)
Comunicação
Realizada através de eventos de comunicação
Eventos são atômicos, instantâneos Eventos são atômicos, instantâneos
A comunicação só ocorre através da sincronização entre dois ou mais processos: Mesmo evento ocorre em dois processos ao
mesmo tempo
![Page 6: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/6.jpg)
Comunicações
Em CSP, a partir de channel ch: T
Podemos ter as comunicações ch?var para uma entrada de dados ch?var para uma entrada de dados
ch!exp para uma saída de dados
ch.expS para sincronização simples e/ou saída de dados
Assim, evite ch?(1+x) e ch.(1+x*2), mas ch.x é válido
![Page 7: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/7.jpg)
Comunicações restritas
Dissemos anteriormente que channel ch: Int
era muito custoso
Uma forma de usar a declaração acima sem Uma forma de usar a declaração acima sem introduzir tanto custo é ch?x:A
Onde A é um sub-conjunto de Int
![Page 8: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/8.jpg)
Exemplo de comunicação restrita
Dado channel ch: Int
Então, ch?x:0,1,2 só permite a leitura de 3 valoresapesar do tipo do canal ser inteiroapesar do tipo do canal ser inteiro
Podemos também usar ch?x:x<=10
ou mesmo ch?x?y:(x-1)..(x+1)
![Page 9: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/9.jpg)
Eventos e alfabetos
O alfabeto de um processo (αP) é o conjunto de todos os seus eventos:
O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR)alfabetos de todos os processos (Events em FDR)
A escolha de eventos deve ser cuidadosa O modelo pode tornar-se não é analisável
Suponha a ocorrência do pressionamento de qualquer tecla (1 evento) versus teclas específicas(N eventos)
![Page 10: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/10.jpg)
Eventos
Denotam acontecimentos do mundo real que sãorelevantes para o modelo
Exemplos: Exemplos: Chamadas de métodos
Fatos/ações perceptíveis (computador travou, pressionamento de uma tecla, etc.)
Sincronizações Só continuo se…
![Page 11: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/11.jpg)
Canais
A diferença básica de canais para eventos é que canais comunicam dados
Assim
channel ev (É um evento)
channel ch: Int (É um canal)
![Page 12: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/12.jpg)
No final, só temos eventos…
Canais são meros açúcares sintáticos para coleções de eventos
Assim channel ch: Int channel ch: Int
Produz Os eventos ch.0, ch.1, …, ch.N
Particularmente |ch| = ch.0, ch.1, …, ch.N
![Page 13: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/13.jpg)
Mas atenção…
Uma declaração como channel ch: Int
É muito custosa porque produz um conjunto muito grande de eventosgrande de eventos
Será que você precisará realmente de todo esse conjunto?
Tente simplificar sempre que possível!!!
![Page 14: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/14.jpg)
STOP
Processo sem comportamento Representa um estado terminal, de onde não é
possível sair nunca mais
Este processo representa estado (processo) Em deadlock, ou Sem funcionar (quebrado)
![Page 15: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/15.jpg)
Deadlock
Em CSP, o deadlock pode ocorrer em duas situações
Com o uso do processo STOP É estático e deve ser proposital (falha)
Decorrente de impasse Decorrente de impasse É dinâmico e deve ser evitado (erro na modelagem)
![Page 16: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/16.jpg)
SKIP
Também é um processo básico, mas denota comportamento de término com sucesso
Sucesso significa ter o evento especial (√) no trace do processodo processo
Note que √ não é um evento sintático/declarável (channel)∑√ = ∑ ∪ √
P = SKIP é um processo CSP válido!
![Page 17: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/17.jpg)
Prefixo
Operador usado para modelar comportamentolinear (->) ev -> Proc
O processo a -> P espera indefinidamente por a, e O processo a -> P espera indefinidamente por a, e então comporta-se como P
Exemplo: TwoSteps = leftFoot -> rightFoot -> SKIP
Formas inválidas: a -> b, P -> Q
![Page 18: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/18.jpg)
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
![Page 19: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/19.jpg)
Definições Recursivas
P1 = up -> down -> P1
P2 = up -> down -> up -> down -> P2
Através de equações recursivas (guardadas)Através de equações recursivas (guardadas)
Utilizadas para processos que tem um comportamento repetitivo normalmente não terminam
![Page 20: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/20.jpg)
Processo vs definição de processo
Operador de recursão: µX.F(X)
representa “o processo” definido porP = F(P)P = F(P)
para uma expressão F (guardada)
P = F(P) equivale a P = µX.F(X) Isto é, podemos ter definições (equações)
diferentes, mas processos iguais
![Page 21: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/21.jpg)
Definições mutuamente recursivas
Pu = up -> Pd
Pd = down -> Pu
Processo versus Sistema: Processo versus Sistema:
Dois processos, um único sistema
Um processo não “chama” um outro processo, mas “comporta-se como” um outro processo
![Page 22: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/22.jpg)
Escolha prefixada
Operador para construir processos:?x:A -> P(x)
onde x é uma variável, A um conjunto de eventos, e P(x) um processoeventos, e P(x) um processo
O conjunto A pode ser infinito (Cuidado)
STOP equivale a ?x: -> P(x)
![Page 23: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/23.jpg)
Escolha Determinística
O processo P [] Q oferece a possibilidade tanto de se comportar quanto P quanto como Q
A decisão sobre P ou Q não pertence a P [] Q, mas de quem interage com elede quem interage com ele
![Page 24: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/24.jpg)
Entrada e escolha
Seja c um canal do tipo e0, …, eN, então
c?x -> P
c.e0 -> P[e0 / x][ ]…[ ]c.eN -> P[eN / x]
![Page 25: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/25.jpg)
Escolha prefixada
Abreviação para o operador indexado de escolha externa:
?x:A -> P(x)
é equivalente a[] x:A @ x -> P(x)[] x:A @ x -> P(x)
Exemplo:Sigma = a,b,up,down
REPEAT =
[] x:Sigma @ x -> x -> REPEAT
![Page 26: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/26.jpg)
Máquinas de estados e CSP
Todo processo em CSP corresponde a uma “máquina de estados” (ou LTS) Labelled Transition Systems
Ferramentas de verificação de modelos (model checking), como FDR, verificam processos com um número finito de estados
![Page 27: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/27.jpg)
LTS de STOP
Ω
![Page 28: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/28.jpg)
LTS de SKIP
ΩSKIP √
Por que se analisarmos o processo P = SKIP em FDR sobre deadlock, haverá uma confirmação dessa propriedade indesejável?
![Page 29: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/29.jpg)
LTS de Prefixo (a -> P)
aP
a
![Page 30: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/30.jpg)
LTS da escolha determinística
Pa
Seja S = (a -> P) [] (b -> Q), então
Pa
Qb
S
![Page 31: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/31.jpg)
Definições parametrizadas
Corresponde a uma família, possivelmente infinita , de definições:
COUNT(n)= COUNT(n)=
if n==0 then
(up -> COUNT(1))
else
(up -> COUNT(n+1) []
down -> COUNT(n-1))
![Page 32: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/32.jpg)
Definições parametrizadas
O número de estados pode ser limitado:LCOUNT(L,n) =
(n<L & up -> LCOUNT(L,n+1))
[](n>0 & down -> LCOUNT(L,n-1))[](n>0 & down -> LCOUNT(L,n-1))
onde(cond & P)
corresponde aif cond then P else STOP
![Page 33: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/33.jpg)
Exemplo
DATA = 0,1
channel left, right:DATA
COPY = left?x -> right!x -> COPY
Binf(s) =
if s==<> then
left?x -> Binf(<x>)
else (left?x -> Binf(s^<x>)
[]right!head(s) -> Binf(tail(s)))
![Page 34: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/34.jpg)
Exemplo
ATM1 = incard?c -> pin.fpin(c) ->
req?n -> dispense!n ->
outcard.c ->
channel incard, outcard:CARD
channel pin:PINs
channel req, dispense:WA
![Page 35: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/35.jpg)
Exemplo
CARD = 0..9
datatype pinnumbers = PIN.Int
fpin(c) = PIN.c
PINs = fpin(c) | c <- CARDPINs = fpin(c) | c <- CARD
WA = 10,20,30,40,50
![Page 36: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/36.jpg)
Ferramentsa
ProBE Animador para CSP
FDR Verificador de modelos para CSP
Casper Projetar protocolos com geração de especificação CSP
automaticamente
![Page 37: EVENTO, COMUNICAÇÃO, ALFABETO, PROCESSO, E …if711/aulas/Aula 02.pdf · O alfabeto de uma especificação (Σ) é a união dos alfabetos de todos os processos (Events em FDR) A](https://reader036.vdocuments.com.br/reader036/viewer/2022062915/5e95a077a4f7983ac5205ff6/html5/thumbnails/37.jpg)
Exercícios
Do livro texto Essenciais: 1.1.1, 1.1.2, 1.1.3 Opcionais: 1.1.5, 1.1.4