Álgebras de processo (fsp e csp) joabe jesus [email protected]

58
Álgebras de Processo (FSP e CSP) Joabe Jesus [email protected]

Upload: internet

Post on 18-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Álgebras de Processo(FSP e CSP)

Joabe [email protected]

Page 2: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Conceitos Fundamentais

• Programa concorrente– 2 ou mais fluxos (processos) executam

simultaneamente para realizar uma tarefa• Processo– É um programa seqüencial (lista de comandos

executados em sequencia)

Page 3: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Programas Concorrentes

• Processos comunicam-se através de– Variáveis compartilhadas– Passagem de mensagens

• E sincronizam por– Exclusão mútua

• Seções críticas não devem executar ao mesmo tempo

– Sincronização condicional• Retarda um processo até uma dada condição ser satisfeita

Page 4: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

concurrent processesWe structure complex systems as sets of simpler activities, each represented as a sequential process. Processes can overlap or be concurrent, so as to reflect the concurrency inherent in the physical world, or to offload time-consuming tasks, or to manage communications or other devices.

Designing concurrent software can be complex and error prone. A rigorous engineering approach is essential.

Model processes as finite state machines.

Program processes as threads in Java.

Concept of a process as a sequence of actions.

Page 5: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

processes and threads

Concepts: processes - units of sequential execution.

Models: finite state processes (FSP) to model processes as sequences of actions.

labelled transition systems (LTS) to analyse, display and animate behavior.

Practice: Java threads

Page 6: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Modeling Processes

• Models are described using state machines, known as Labelled Transition Systems LTS. These are described textually as finite state processes (FSP) and displayed and analysed by the LTSA analysis tool– LTS - graphical form– FSP - algebraic form– CSP - algebraic form

Page 7: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

FSPÁlgebra de Processos

Page 8: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

modeling processes A process is the execution of a sequential program. It is modeled as a finite state machine which transits from state to state by executing a sequence of atomic actions.

a light switch LTS

onoffonoffonoff ……….a sequence of actions or trace

on

off

0 1

Can finite state models produce infinite traces?

Page 9: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

FSP - action prefixIf x is an action and P a process then (x-> P) describes a process that initially engages in the action x and then behaves exactly as described by P.

ONESHOT = (once -> STOP). ONESHOT state machine

(terminating process)

Convention: actions begin with lowercase letters PROCESSES begin with uppercase letters

once

0 1

Page 10: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

FSP - action prefix & recursion

SWITCH = OFF,OFF = (on -> ON),ON = (off-> OFF).

Repetitive behaviour uses recursion:

Substituting to get a more succinct definition:

SWITCH = OFF,OFF = (on ->(off->OFF)).

And again:

SWITCH = (on->off->SWITCH).

on

off

0 1

Page 11: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

animation using LTSA

Ticked actions are eligible for selection.

In the LTS, the last action is highlighted in red.

The LTSA animator can be used to produce a trace.

on

off

0 1

Page 12: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

FSP - action prefix

TRAFFICLIGHT = (red->orange->green->orange -> TRAFFICLIGHT).

LTS generated using LTSA:

Trace:

FSP model of a traffic light :

redorangegreenorangeredorangegreen …

red orange green

orange

0 1 2 3

Page 13: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Referências

• FSP– http://www.doc.ic.ac.uk/~jnm/LTSdocumention/FSP-

notation.html• LTSA - http://www.doc.ic.ac.uk/ltsa/– Applet

• http://www.doc.ic.ac.uk/~jnm/book/ltsa/LTSA_applet.html

– Eclipse Plugin - http://www.doc.ic.ac.uk/ltsa/eclipse/• Instalação - http://www.doc.ic.ac.uk/ltsa/eclipse/install

– SceneBeans• http://www-dse.doc.ic.ac.uk/Software/SceneBeans/

• http://www.doc.ic.ac.uk/~jnm/book/

Page 14: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

CSPÁlgebra de Processos

Page 15: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

CSP

• Notação para modelar sistemas concorrentes• Alto nível de abstração– Comunicação via passagem de mensagens– Vários operadores para compor processos

• Ferramentas para analisar propriedades automaticamente– Ex: FDR, PAT

• Possui bibliotecas para Java– Ex: JCSP

Page 16: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

CSP

• A simple programming language designed for multiprocessor machines

• Its key feature is its reliance on non-buffered message passing with explicit naming of source and destination processes

• CSP uses guarded commands to let processes wait for messages coming from different sources

Page 17: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

The Model

• Each process runs on its own processor • All communications between concurrent

processes are made through message passing.• CSP relies on the most primitive message

passing mechanism:– Non-buffered sends and receives– Explicit naming of source and destination

processes

Page 18: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

ProBE (Animador de CSP)

Page 19: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

FDR (Analisador de CSP)

Page 20: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

JCSP

• Biblioteca para Java que suporta (subconjunto) de CSP

• Programação concorrente com passagem de mensagens

• Possível usar memória compartilhada (mas desaconselhável)

Page 21: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

CSPNotação

Page 22: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Escolhas

• Em CSP temos vários tipos de operadores de escolha– P [] Q (Escolha determinística)– P |~| Q (Escolha não-determinística)– if b then P else Q (Escolha condicional)– b & P (guarda)

Page 23: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Estado de um processo

• Na prática, dificilmente um processo não precisará da noção de estado

• Por exemplo: controlar a evolução do conteúdo de uma fila, pilha, etc.

• Em CSP, estado pode ser capturado através de parâmetros em processos

• P(S) = …

Page 24: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Estado de um processo

• Um processo com parâmetros é semelhante a uma classe

• Para usar é preciso “criar uma instância”• Ou seja, atribuir valores iniciais aos

parâmetros– P(0) ou Q(true)

Page 25: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Tipos usados em estados

• CSP dispõe de alguns tipos simples:– Básicos: inteiros (Int) e booleanos (Bool)– Tuplas: (x, y, z)– Conjuntos: { 1, 2, 3 } ou { x | x <- T }– Seqüências: 1, 2, 3 ou x | x <- T – Enumerações: datatype T = A | B– Abreviação: nametype Nat = { x | x <- Int, x >= 0}

Page 26: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Operações sobre tipos

• Cada tipo tem operações disponíveis– first(x, y) = x– head( 1, 2, 3 ) = 1– tail( 1, 2, 3 ) = 2, 3 – union({0, 1}, {3}) = {0, 1, 3}– member(0, {0, 1}) = true– Etc.

Page 27: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Funções

• As vezes é necessário definir funções para manipular estruturas específicas

• Por exemplo– first3(x, y, z) = x– midd3(x, y, z) = y

• Mas antes de criar uma função é sempre bom ver disponibilidade…

Note o uso de casamentoDe padrões

Page 28: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Escolha condicional

• Sejam P e Q dois processos e b uma expressão booleana. Então

if b then P else Q

Page 29: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

LTS de escolha condicional

Pb

Q b

Seja S = if b then P else Q, então

S

Page 30: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Escolha condicional: Buffer

channel in, out: {0, 1}Buffer(s) = if s == then

in?x -> Buffer(s^ x )else ( in?x -> Buffer(s^ x )

[] out!head(s) -> Buffer(tail(s)) )

Page 31: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Casamento de padrões

• Como CSP é equipada com uma linguagem funcional, também há suporte a casamento de padrões em processos

• Buffer( ) seria equivalente aBuffer(s) = if s == then …

Page 32: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Casamento de padrões: Buffer

channel in, out: {0, 1}Buffer( ) = in?x -> Buffer(s^ x )Buffer( h ^t) =

( in?x -> Buffer(s^ x ) [] out!h -> Buffer(t) )

Page 33: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Guarda

• O processo guardado– b & P

• É equivalente a escolha condicional– if b then P else STOP

Page 34: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

LTS de guarda

Pb

b

Seja S = b & P, então

S

Page 35: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Guarda: Buffer

• channel in, out: {0, 1}• Buffer(s) = (s == ) & in?x -> Buffer(s^ x )

[] (s != ) &( in?x -> Buffer(s^ x )[] out!head(s) ->

Buffer(tail(s)) )

Page 36: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Exercício

• Modele o atendimento de uma fila de um caixa de banco– A fila pode aumentar se chegar cliente– Pode diminuir se cliente for atendido– Cliente pode sacar ou depositar qq valor– A fila do caixa deve iniciar sem qq cliente (vazia)

Page 37: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

INTRODUZINDO CONCORRÊNCIA

Page 38: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Paralelismo

• Representam a execução paralela de dois ou mais processos:– fluxos de controles independentes– interações eventuais

• Utilizados para conectar os componentes de um sistema distribuído:– sistemas distribuídos a partir de componentes seqüenciais – sistemas distribuídos a partir de componentes paralelos

Page 39: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Operadores de Paralelismo

• Concorrência pode ser expressa em CSP através de:– Composição paralela alfabetizada• P [ X || Y ] Q

– Composição paralela generalizada• P [| X |] Q

– Entrelaçamento• P ||| Q

Page 40: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Entrelaçamento

• Sejam P e Q processos CSP entãoP ||| Q

• P e Q são executados em paralelo sem sincronização (independentes)

• Útil para especificar arquiteturas cliente-servidor– Vários clientes e/ou servidores

Page 41: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Entrelaçamento

• P ||| Q – Oferece os eventos iniciais tanto de P quanto de

Q, e espera até que haja uma comunicação– Após a comunicação de um evento a de P (Q),

comporta-se como P’ ||| Q (P ||| Q’)– Na presença de mesmo evento, P ||| Q evolução

em P ou Q é não-determinística

Page 42: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Processos Paralelos e Seqüenciais

• Sejam P = c?x:A -> P’ e Q = c?x:B -> Q’. Então:

P ||| Q = c?x: A B -> if (x A B) then (P’ ||| Q) |~| (P ||| Q’) else if (x A) then (P’ ||| Q) else (P ||| Q’)

Page 43: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Lei Interessante

• Seja P um processo CSP. EntãoP ||| STOP = P

• Esta lei decorre imediatamente do slide anterior (step-law)– if (x A) then (P’ ||| Q)– Onde Q é o processo STOP

• Este fato nos permite modelar tolerância a falhas

Page 44: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Cuidado

• Sejam P e Q processos CSPrecursivos. O processo

P = P ||| Q• É infinito estruturalmente e FDR não consegue

lidar com o mesmo• Já P = P’ ||| Q pode ser trabalhado sem

problemas

O mesmo ocorre também com escolha externa

Page 45: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Exercício

• Adapte o modelo de caixas anterior para considerar 2 caixas

Page 46: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Composição Paralela Generalizada

• Sejam P e Q processos CSP entãoP [| X |] Q

• P e Q são executados em paralelo mas sincronizando nos eventos em X:– Nos outros eventos semelhante ao operador de

entrelaçamento (independente)

Page 47: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Composição Paralela Generalizada

• Generaliza outros operadores:– P ||| Q = P [| {} |] Q– P [ X || Y ] Q =

(P [| Events \ X |] STOP)[| X Y |] (Q [| Events \ Y |] STOP)

• Não pode ser expresso através dos outros operadores

Page 48: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Composição Paralela Generalizada

• P [| X |] Q – Com A e B sendo respectivamente os eventos

iniciais de P e Q, tem-se o seguinte conjunto de eventos:

C =(A \ X) U (B \ X) U (A B X)

Page 49: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Processos Paralelos e Sequenciais

Sejam P = c?x:A -> P’ e Q = c?x:B -> Q’. Então P [| X |] Q = c?x:C -> if (xX) then P’ [|X|] Q’ else if (xAB) then (P’ [|X|] Q) |~| (P [|X|] Q’) else if (xA) then (P’ [|X|] Q) else (P [|X|] Q’)

Page 50: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Deadlock

P = (a -> b -> P) [] (b -> a -> P)

Q = (a -> c -> Q) [] (c -> a -> Q)

P [|Events|] Q = a -> STOP

Page 51: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Exercício

• Adapte o exercício de caixas anterior para que um cliente possa trocar de fila

Page 52: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Restringindo Concorrência

• Os operadores de composição paralela podem ser usados para restringir o comportamento dos processos:– P [|X|] STOP comporta-se como P exceto pela

proibição da realização dos eventos em X– P [|X|] Q, onde Q só realiza os eventos em X,

restringe o comportamento de P

Page 53: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Associatividade

• Sejam P, Q e R processos CSP, X e Y conjuntos de sincronização. Então– (P [|X|] Q) [|Y|] R P [|X|] (Q [|Y|] R)

• Só quando X = Y esta associatividade é válida– (P [|X|] Q) [|X|] R = P [|X|] (Q [|X|] R)

Page 54: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Multiway rendezvous

• Ocorre quando mais de dois processos participam de interação em comum

• Do ponto de vista de análise pode ser usado sem problemas

• No nível de projeto deve ser evitado ou reescrito

• O modelo CSP que será usado para mapear em JCSP não deve usar– JCSP não suporta

Page 55: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Operadores Indexados

• Para P [ X || Y ] Q temos– || i:{1..N} @ [A(i)] P(i)

• Para P ||| Q temos– ||| i:{1..N} @ P(i)

• Para P [|X|] Q temos– [|X|] i:{1..N} @ P(i)

Page 56: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Cliente-Servidor Indexados

• Sejam Ci e Sj processos CSP e X um conjunto de sincronização entre Ci e Sj. Então uma arquitetura cliente-servidor pode ser vista genericamente como

(|||i=1..N Ci) [|X|] (|||j=1..K Sj)

Page 57: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Referências

• Roscoe, A.W. The Theory and Practice of Concurrency. Prentice-Hall, 1998.

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

• http://www.usingcsp.com/

Page 58: Álgebras de Processo (FSP e CSP) Joabe Jesus jbjj@cin.ufpe.br

Referências

• CSP– http://www.cin.ufpe.br/~if711/aulas/Aula

%2002.pdf– Courses• http://www.cin.ufpe.br/~if711/• http://www.softeng.ox.ac.uk/subjects/CDS.html• http://www.softeng.ox.ac.uk/subjects/ACT.html

• FDR – Failures Divergences Refinement– http://www.fsel.com