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

Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

  • Upload
    akiva

  • View
    19

  • Download
    0

Embed Size (px)

DESCRIPTION

Operadores Básicos. Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco. Processos. 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. - PowerPoint PPT Presentation

Citation preview

Page 1: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

Paulo Borba e Augusto Sampaio

Centro de Informática

Universidade Federal de Pernambuco

Operadores Básicos

Page 2: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 3: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 4: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 5: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 6: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 7: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

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 8: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

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

Page 9: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 10: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

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

Page 11: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 12: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• É 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,bB0 = a -> B0 [] b -> B1B1 = a -> B0 [] b -> STOP

Page 13: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 14: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 15: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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))

onde

(cond & P)

corresponde a

if cond then P else STOP

Definições Parametrizadas

Page 16: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 17: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• É 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

Page 18: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• 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

Page 19: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

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)))

Eventos Compostos

Page 20: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

ATM1 = incard?c -> pin.fpin(c) ->

req?n -> dispense!n ->

outcard.c ->

channel incard, outcard:CARD

channel pin:PINs

channel req, dispense:WA

Exemplo

Page 21: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

CARD = {0..9}

datatype pinnumbers = PIN.Int

fpin(c) = PIN.c

PINs = {fpin(c) | c <- CARD}

WA = {10,20,30,40,50}

Exemplo

Page 22: Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco

• Do livro texto– Essenciais: 1.1.1, 1.1.2, 1.1.3– Opcionais: 1.1.5, 1.1.4

Exercícios