Communicationg Sequential Processes (CSP) - 83/7/13

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