Professional Documents
Culture Documents
(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