Processos comunicants seqüencials

Processos comunicants seqüencials, de sigles anglosaxones CSP (Communicating sequential processes), és un model de Programació d'ordinadors de sistemes concurrents basat en la comunicació entre processos. Definició del model:[1]

  • Estructures de control seqüencials: ordres amb guarda de Dijkstra: <condició o guarda> → <acció>
  • Execució concurrent dels processos.
  • Ordres especials d'entrada/sortida entre processos: Pj ! i Pi? X
    • La comunicació té lloc quan un procés Pi nomena a un altre procés Pj com a destí de la seva sortida i Pj nomena Pi com a origen de la seva entrada.
    • No hi ha buffering (coixí de missatges). Els processos que han d'enviar o rebre missatges queden bloquejats fins que aconsegueixen la comunicació.
  • No es creen ni es destrueixen processos durant l'execució dels programes (són estàtics).
  • No hi ha recursivitat.

RelacionatModifica

Occam Pi
CSP amb àlgebra de processos "calcul Pi" on els noms dels canals poden ser l'objecte transmès com a missatge.[2]
JoCaml
llenguatge funcional, extensió de OCaml, que implementa l'àlgebra de processos anomenada "càlcul Join" on les guardes són patrons de sincronisme (simultaneïtat de missatges a diversos canals), amb concurrència per pas de missatges asíncrons i síncrons.
llenguatge Hume
implementa concurrència per pas de missatges i sincronia de canals. Els processos s'agrupen en autòmats (construcció box) on l'entrada és una tupla de canals amb un conjunt d'alternatives de patrons de sincronisme (càlcul Join) i l'estat és a les bústies modificades per realimentació. Les comunicacions s'especifiquen com a cablejat entre autòmats (instrucció wire) i es poden descriure en un entorn gràfic IDE.[3][4]
Communicating Haskell Processes
biblioteca de Haskell que implementa CSP basada en mònades.[5]
Java JCSP
"Communicating Sequential Processes for Java" de la Univ. de Kent[6]
Join Java
implementació de càlcul Join sobre Java.[7]
Poliphonic C#
Implementació del Join calculus per a C#,[8] integrat al llenguatge Cw.[9]

ReferènciesModifica