You are on page 1of 58

lgebrasdeProcesso

(FSPeCSP)
JoabeJesus
jbjj@cin.ufpe.br
ConceitosFundamentais
Programaconcorrente
2oumaisfluxos(processos)executam

simultaneamentepararealizarumatarefa
Processo
umprogramaseqencial(listadecomandos

executadosemsequencia)
ProgramasConcorrentes
Processoscomunicamseatravsde
Variveiscompartilhadas
Passagemdemensagens
Esincronizampor
Exclusomtua
Seescrticasnodevemexecutaraomesmotempo
Sincronizaocondicional
Retardaumprocessoat

umadadacondiosersatisfeita
concurrentprocesses
Westructurecomplexsystemsassetsofsimpler

activities,eachrepresentedasasequentialprocess.

Processescanoverlaporbeconcurrent,soasto

reflecttheconcurrencyinherentinthephysical

world,ortooffloadtimeconsumingtasks,orto

managecommunicationsorotherdevices.
Designingconcurrentsoftwarecanbecomplexand

errorprone.Arigorousengineeringapproachis

essential.
Model processes as finite
state machines.
Program processes as threads
in Java.
Concept of a process as a
sequence of actions.
processesandthreads
Concepts:processes

unitsofsequentialexecution.
Models:

finitestateprocesses(FSP)
tomodelprocessesassequencesofactions.
labelledtransitionsystems

(LTS)
toanalyse,displayandanimatebehavior.
Practice:Javathreads
ModelingProcesses
Modelsaredescribedusingstatemachines,

knownasLabelledTransitionSystemsLTS.

Thesearedescribedtextuallyasfinitestate

processes(FSP)anddisplayedandanalysedby

theLTSAanalysistool
LTS

graphicalform
FSP

algebraicform
CSP

algebraicform
FSP
lgebradeProcessos
modelingprocesses
Aprocessistheexecutionofasequentialprogram.Itismodeledasafinitestate

machinewhichtransitsfromstatetostatebyexecutingasequenceofatomic

actions.
alightswitchLTS
onoffonoffonoff.
asequenceofactionsor

trace
on
off
0 1
Canfinitestatemodelsproduceinfinitetraces?
FSP

actionprefix
Ifx

isanactionandP

aprocessthen(x>P)

describesa

processthatinitiallyengagesintheactionx

andthen

behavesexactlyasdescribedbyP.
ONESHOT = (once -> STOP).
ONESHOTstatemachine
(terminatingprocess)
Convention:actionsbeginwithlowercaseletters
PROCESSESbeginwithuppercaseletters
once
0 1
FSP

actionprefix&recursion
SWITCH = OFF,
OFF = (on -> ON),
ON = (off-> OFF).
Repetitivebehaviourusesrecursion:
Substitutingtogetamoresuccinctdefinition:
SWITCH = OFF,
OFF = (on ->(off->OFF)).
Andagain:
SWITCH = (on->off->SWITCH).
on
off
0 1
animationusingLTSA
Tickedactionsareeligibleforselection.
IntheLTS,thelastactionishighlightedin

red.
TheLTSA

animatorcanbeusedto

produceatrace.
on
off
0 1
FSP

actionprefix
TRAFFICLIGHT = (red->orange->green->orange
-> TRAFFICLIGHT).
LTSgeneratedusingLTSA:
Trace:
FSPmodelofatrafficlight:
redorangegreenorangeredorangegreen
red orange green
orange
0 1 2 3
Referncias
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
EclipsePlugin

http://www.doc.ic.ac.uk/ltsa/eclipse/
Instalao

http://www.doc.ic.ac.uk/ltsa/eclipse/install
SceneBeans
http://wwwdse.doc.ic.ac.uk/Software/SceneBeans/
http://www.doc.ic.ac.uk/~jnm/book/
CSP
lgebradeProcessos
CSP
Notaoparamodelarsistemasconcorrentes
Altonveldeabstrao
Comunicaoviapassagemdemensagens
Vriosoperadoresparacompor

processos
Ferramentasparaanalisarpropriedades

automaticamente
Ex:FDR,PAT
PossuibibliotecasparaJava
Ex:JCSP
CSP
Asimpleprogramminglanguagedesignedfor

multiprocessormachines
Itskeyfeatureisitsrelianceonnonbuffered

messagepassingwithexplicitnaming

of

sourceanddestinationprocesses
CSPusesguardedcommands

toletprocesses

waitformessagescomingfromdifferent

sources
TheModel
Eachprocessrunsonitsownprocessor
Allcommunicationsbetweenconcurrent

processesaremadethroughmessagepassing.
CSPreliesonthemostprimitivemessage

passingmechanism:
Nonbufferedsendsandreceives
Explicitnamingofsourceanddestination

processes
ProBE(AnimadordeCSP)
FDR(AnalisadordeCSP)
JCSP
Biblioteca

para

Javaque

suporta

(subconjunto)deCSP
Programao

concorrente

compassagem

de

mensagens
Possvel

usar

memria

compartilhada

(mas

desaconselhvel)
CSP
Notao
Escolhas
EmCSPtemosvriostiposdeoperadoresde

escolha
P[]Q(Escolhadeterminstica)
P|~|Q(Escolhanodeterminstica)
ifbthenPelseQ(Escolhacondicional)
b&P(guarda)
Estadodeumprocesso
Naprtica,dificilmenteumprocessono

precisar

danoodeestado
Porexemplo:controlaraevoluodo

contedodeumafila,pilha,etc.
EmCSP,estadopodesercapturadoatravsde

parmetrosemprocessos
P(S)=
Estadodeumprocesso
Umprocessocomparmetros

semelhantea

umaclasse
Parausar precisocriarumainstncia
Ouseja,atribuirvaloresiniciaisaos

parmetros
P(0)ouQ(true)
Tiposusadosemestados
CSPdispedealgunstipossimples:
Bsicos:inteiros(Int)ebooleanos(Bool)
Tuplas:(x,y,z)
Conjuntos:{1,2,3}ou{x|x<

T}
Seqncias:

1,2,3

ou

x|x<

T
Enumeraes:datatypeT=A|B
Abreviao:nametypeNat={x|x<

Int,x>=0}
Operaessobretipos
Cadatipotemoperaesdisponveis
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.
Funes
Asvezes

necessriodefinirfunespara

manipularestruturasespecficas
Porexemplo
first3(x,y,z)=x
midd3(x,y,z)=y
Masantesdecriarumafuno semprebom

verdisponibilidade
Noteousodecasamento
Depadres
Escolhacondicional
SejamPeQdoisprocessosebumaexpresso

booleana.Ento
ifbthenP
elseQ
LTSdeescolhacondicional
P
b
Q


b
SejaS=ifbthenPelseQ,ento
S
Escolhacondicional:Buffer
channelin,out:{0,1}
Buffer(s)= ifs==

then

in?x>Buffer(s^

x

)
else(in?x>Buffer(s^

x

)

[]out!head(s)>

Buffer(tail(s)))
Casamentodepadres
ComoCSP

equipadacomumalinguagem

funcional,tambmh

suporteacasamentode

padresemprocessos
Buffer( )seriaequivalentea

Buffer(s)=ifs==

then
Casamentodepadres:Buffer
channelin,out:{0,1}
Buffer( )= in?x>Buffer(s^

x

)
Buffer(

h

^t)=
(in?x>Buffer(s^

x

)
[]out!h>Buffer(t))
Guarda
Oprocessoguardado
b&P


equivalenteaescolhacondicional
ifbthenPelseSTOP
LTSdeguarda
P
b


b
SejaS=b&P,ento
S
Guarda:Buffer
channelin,out:{0,1}
Buffer(s)=(s==

)&in?x>Buffer(s^

x

)

[](s!=

)&

(in?x>Buffer(s^

x

)

[]out!head(s)>

Buffer(tail(s)))
Exerccio
Modeleoatendimentodeumafiladeum

caixadebanco
Afilapodeaumentarsechegarcliente
Podediminuirseclienteforatendido
Clientepodesacaroudepositarqqvalor
Afiladocaixadeveiniciarsemqqcliente(vazia)
INTRODUZINDOCONCORRNCIA
Paralelismo
Representamaexecuoparaleladedoisoumais

processos:
fluxosdecontrolesindependentes
interaeseventuais
Utilizadosparaconectaroscomponentesdeum

sistemadistribudo:
sistemasdistribudosapartirdecomponentesseqenciais
sistemasdistribudosapartirdecomponentesparalelos
OperadoresdeParalelismo
ConcorrnciapodeserexpressaemCSP

atravsde:
Composioparalelaalfabetizada
P[X||Y]Q
Composioparalelageneralizada
P[|X|]Q
Entrelaamento
P|||Q
Entrelaamento
SejamPeQprocessosCSPento
P|||Q
PeQsoexecutadosemparalelosem

sincronizao(independentes)
tilparaespecificararquiteturascliente

servidor
Vriosclientese/ouservidores
Entrelaamento
P|||Q
OfereceoseventosiniciaistantodePquantode

Q,eesperaat

quehajaumacomunicao
ApsacomunicaodeumeventoadeP(Q),

comportasecomoP

|||Q(P|||Q)
Napresenademesmoevento,P|||Qevoluo

emPouQ nodeterminstica
ProcessosParaleloseSeqenciais
SejamP=c?x:A>P

eQ=c?x:B>Q.Ento:
P|||Q
=
c?x:AB

>
if(x

AB)then(P

|||Q)|~|(P|||Q)
elseif(x

A)then(P

|||Q)
else(P|||Q)
LeiInteressante
SejaPumprocessoCSP.Ento

P|||STOP=P
Estaleidecorreimediatamentedoslide

anterior(steplaw)
if(x

A)then(P

|||Q)
OndeQ oprocessoSTOP
Estefatonospermitemodelartolernciaa

falhas
Cuidado
SejamPeQprocessosCSP

recursivos.Oprocesso

P=P|||Q
infinitoestruturalmenteeFDRnoconsegue

lidarcomomesmo
J

P=P

|||Qpodesertrabalhadosem

problemas
Omesmoocorre

tambmcom

escolhaexterna
Exerccio
Adapteomodelodecaixasanteriorpara

considerar2caixas
ComposioParalelaGeneralizada
SejamPeQprocessosCSPento
P[|X|]Q
PeQsoexecutadosemparalelomas

sincronizandonoseventosemX:
Nosoutroseventossemelhanteaooperadorde

entrelaamento(independente)
ComposioParalelaGeneralizada
Generalizaoutrosoperadores:
P|||Q=P[|{}|]Q
P[X||Y]Q=
(P[|Events\ X|]STOP)
[|XY|]
(Q[|Events\ Y|]STOP)
Nopodeserexpressoatravsdosoutros

operadores
ComposioParalelaGeneralizada
P[|X|]Q
ComAeBsendorespectivamenteoseventos

iniciaisdePeQ,temseoseguinteconjuntode

eventos:
C=(A\ X)U(B\ X)U(ABX)
ProcessosParaleloseSequenciais
SejamP=c?x:A>P

eQ=c?x:B>Q.Ento
P[|X|]Q
=
c?x:C

>
if(xX)thenP

[|X|]Q
elseif(xAB)then(P

[|X|]Q)|~|(P[|X|]Q)
elseif(xA)then(P

[|X|]Q)
else(P[|X|]Q)
Deadlock
P=(a>b>P)
[](b>a>P)
Q=(a>c>Q)
[](c>a>Q)
P[|Events|]Q=a>STOP
Exerccio
Adapteoexercciodecaixasanteriorparaque

umclientepossatrocardefila
RestringindoConcorrncia
Osoperadoresdecomposioparalelapodem

serusadospararestringirocomportamento

dosprocessos:
P[|X|]STOPcomportasecomoPexcetopela

proibiodarealizaodoseventosemX
P[|X|]Q,ondeQs

realizaoseventosemX,

restringeocomportamentodeP
Associatividade
SejamP,QeRprocessosCSP,XeYconjuntos

desincronizao.Ento
(P[|X|]Q)[|Y|]R

P[|X|](Q[|Y|]R)
S

quandoX=Yestaassociatividade

vlida
(P[|X|]Q)[|X|]R=P[|X|](Q[|X|]R)
Multiwayrendezvous
Ocorrequandomaisdedoisprocessos

participamdeinteraoemcomum
Dopontodevistadeanlisepodeserusado

semproblemas
Nonveldeprojetodeveserevitadoou

reescrito
OmodeloCSPqueser

usadoparamapear

emJCSPnodeveusar
JCSPnosuporta
OperadoresIndexados
ParaP[X||Y]Qtemos
||i:{1..N}@[A(i)]P(i)
ParaP|||Qtemos
|||i:{1..N}@P(i)
ParaP[|X|]Qtemos
[|X|]i:{1..N}@P(i)
ClienteServidorIndexados
SejamC
i

eS
j

processosCSPeXumconjunto

desincronizaoentreC
i

eS
j

.Entouma

arquiteturaclienteservidorpodeservista

genericamentecomo

(|||
i=1..N

C
i

)[|X|](|||
j=1..K

S
j

)
Referncias
Roscoe,A.W.TheTheoryandPracticeof

Concurrency.PrenticeHall,1998.
Hoare,C.A.R.CommunicatingSequential

Processes.PrenticeHall,1985.
http://www.usingcsp.com/
Referncias
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

FailuresDivergencesRefinement
http://www.fsel.com

You might also like