CS 494/594 -- Distributed Systems Semester Project

Part 1: Simulation (due Nov 13)

This part of the project requires that you simulate the marker-based distributed solution to taking snapshots. Your simulation will read a list of events and simulated physical times from standard input:
    nodes
    time1 event1
    time2 event2
    ...
    timen eventn
The first line of the input file is the number of nodes to be simulated. Physical times are expressed as increasing integer values.
Events take one of these forms: either
  1. m,p,n,t
    meaning "send a message from process f to process n, taking physical time t to arrive."
  2. l,p,t
    meaning "perform a local event at process p, taking physical time t to complete."
  3. s,p
    meaning "initiate a snapshot on process p."
The output of the program should be the physical and logical time that the snapshot is taken on each node and the latest message received at each node before the snapshot is taken, identified by the node number at time at which it was sent.
    nodenumber,ptime,ltime,sender,stime
Input and output for a sample execution of the algorithm is available here.

Part 2 (due end of semester - exact date TBA)

This part of the project will require you to implement snapshots on actual concurrent processes. The choice of language and and message passing mechanism are up to each student.