CSP Communicating Sequential) (Processes [email protected] http://ce.sharif.edu/~shahriari 1 CSP 1383/7/13 CSP Introduction Basic notations: prefix, recursion, choice, parallel combination deadlock dining philosophers CSP 2 1383/7/13 1 CSP Communicating Sequential Processes C. A. Hoare: 1978 (event) . . " ! (semantics) : CCS, Lotus, Occam $ % ! # ' & 3 CSP 1383/7/13 CSP ) * ##+ "#, : $ % ( #- . Z: 42 3 1#2 0) * /# (Shared memory):5 6 7 * 3 -8 #+ ( 9 "#, : Process1 = event CSP (Process) :9 CSP ( 9 → Process2 4 1383/7/13 2 CSP ! C 9 #9> ? ( $ B %. %6 9 D ( #= 9 ;< ( %6 9 AB @ %' $ D $ $ "#, . # E$ ( 5 CSP 1383/7/13 (Process) . F C : F C ##+ G. D ? $ 0 (events) C coin choc handin-homework J CSP HI H 9 ) ? ( .K# @6 αP H D P I 6 1383/7/13 3 (Process) I α (P) = α (e→P) @ L 9A H STOP . 9 ##+ M# A Q ( P<B $ C 0N O e∈ ! P A 7 CSP 1383/7/13 (Prefix) : $ D α! P Ce( C P I →P Q = e P a CSP 4= ( ST )?R 9 ) .) guarded / J 9 :) ,< P , @ e →(b →STOP) = a →b →STOP 8 1383/7/13 4 VMB = coin → (choc →STOP α ) VMB α VMB = {coin, choc} 9 CSP 1383/7/13 : VMS = coin clock = tick CSP 6I! P , " → (choc →VMS) → clock 10 1383/7/13 5 : # 9 9) U. T CSP V @ % B VMS = coin → (choc →VMS) :) ! AB J 9 : N O VMS {<>, <coin>, <coin,choc >, < coin,choc,coin>, ...} ) . ) . @ (8 (8 11 CSP 1383/7/13 (Choice) (x → P) | (y → Q) ( ST y x ! B 9) . (up CSP 9 Q P # W# :N O →STOP | right →right →up →STOP) 12 1383/7/13 6 VEND = (in5 →5IN) | (10in →IN10) 5IN = (in5 →IN10) | (in10 →coke →VEND) 10IN= →coke →VEND) | (in10 →out5 →coke →VEND) (in5 13 CSP 1383/7/13 #$ % ! " . @6 P "#, P , state % * CSP State ) * C . Z S ) *( %Y S ) CSP )?# S!X S % * 14 1383/7/13 7 : Stack Stack Stack <> <y>^S → Stack = push.x → Stack | pop → Stack = push.x <X> <X>^<y>^S S 15 CSP 1383/7/13 & '( #$ % (x:B . →P(x)) ( ST B! x : P:B →Process )) [ C P(X) z Square = x:N CSP 9) P ( C (x :N O → (x →Square) 2 16 1383/7/13 8 * & || → (choc → VMS) VMS = coin GREEDY_CUST = (choc | (coin '") → GREEDY_CUST) → choc → GREEDY_CUST) GREEDY_CUST || VMS GREEDY_CUST . ? (D VMS )9 0 ( 17 CSP 1383/7/13 || P || STOP = STOP P || RUN = P P || Q = Q || P P || (Q || R) = (P || Q) || R (c CSP * & → P) || (c → Q) = ( c → (P || Q) ) (c → P) || (d → Q) = STOP '") c ≠d I 18 1383/7/13 9 deadlock → (choc → VMS) VMS = coin STUPID_CUST = coin → STUPID_CUST VMS || STUPID_CUST = coin → STOP ) )? / @ ! CSP / 19 1383/7/13 Dining Philosophers CSP 20 1383/7/13 10 Dining Philosophers PHIL = i think i →upfork →upfork →downfork →downfork (i,i) →eat → PHIL i (i,i+1) (i,i) (i,i+1) i FORK = i upfork (i,i) →downfork (i,i) → FORK i | upfork (i-1,i) →downfork (i-1,i) → FORK i 21 CSP 1383/7/13 Dining Philosophers PHILOSOPHERS = PHIL || PHIL || PHIL || PHIL 1 2 3 4 FORKS = FORK 1 || FORK || FORK || FORK 2 3 4 ROOM = PHILOSOPHERS || FORKS CSP 22 1383/7/13 11 .,$ ST : + '") P #- . @ ( concatenation, size, head, tail, : tr C C \ ]( $- . ↓e NO : <coin,choc,coin,choc,coin> ↓ coin = 3 23 CSP 1383/7/13 1 23 / 0 & U 9) . :I C 9 ( (specification) @ I^ ( C C NO : ↓ coin = 3 NOLOSS=(tr ↓ choc) ≤ (tr ↓ coin) FAIR =(tr ↓ coin) ≤ (tr ↓ choc) <coin,choc,coin,choc,coin> CSP 24 1383/7/13 12 5 9 "#, . 4 _(! 9) 9) #2 Y c.v D C v ( N 9 S c @ :K# 9 " chanel(c.v)=c, message(c.v)=v c ! : N 9 '( c!v cN 9 ! ( (c?v ` K 9 ( →P)||(c?x →Q(x) ) (c!v x 25 CSP 1383/7/13 76 → middle!x → P Q = middle?x → out!x → Q P = in?x P || Q is two-place buffer CSP 26 1383/7/13 13 ,08 αP : alphabet of process P . P 4= ( ST e 9 e → P: Q P # b a ? a → P | b → Q: . 9 A. . ' K S$ ( ! ` Q (P : Q || P cN 9 ! x @ c?x: cN 9 v / @ c!v: 27 CSP 1383/7/13 The End! @ 2 CSP 28 1383/7/13 14
© Copyright 2026 Paperzz