Global Snapshot is the
P = individual state of each process in a dis sysC = the state of each communication channel between these processesNote: communication channels are uni-directional and FIFO-ordered
Challenge is to capture this state at the same time across all machines

Algorithm requirements
initiator Pi records state of self
for j in range(N):
if i != j:
send Marker to Pj
# start recording incoming messages on N-1 channels
# handle receiving markers at Pi from Pk
if first_time:
Pi records state of self
marks channel Cik as empty
for j in range(N):
if i != j:
Pi sends marker message on outgoing channel Cij
# start recording incoming messages on all channels except Cik
else:
mark state of channel Cik as already arrived
Terminated once
N-1 incoming channelsHow we got this snapshot?
P1 initiator, sets local state S1 , sends marks and records channels C21, C31P3 from P1, sets local state S3
C13 as emptyC23 (record on non-receiving process channel)P1 from P3
P2 from P3 â sets local state S2
C12 (record on non-receiving process channel)P2 from P1
P1 from P2
C21 to incoming messages (only G->D in this case)P3
Use cuts to evaluate causal correctness of Chandy-Lamport algorithm. Proven that all runs of this algorithm create a consistent cut (lecture 13, page 42).