In this project, we will use a number of different communication mechanisms (TCP sockets, RPC) to implement a distributed/parallel interpreter of a LISP-like language. The handout for this project can be found here (was handed out in class).
We will build the interpreter for a very simple subset of LISP, which we may call EFFELLE. A short tutorial on programming in EFFELLE is given here.
The code for the centralized interpreter for EFFELLE is available here.
A better version of the interpreter is available here. This version has an optional garbage collector (read the README file) and supports short versions of arithmetic operators (e.g. '-' instead of MINUS).
In this project, we will implement a software infrastructure - appropriately called a software bus - for atomic ordered multicast of messages. We will do this with and without the use of Multicast IP.
The handout for this project can be found here.
A short introduction to the use of Multicast IP can be found here.
The source file for the feeder can be found here.
In this project, we will implement a simple Distributed Shared Memory System using the Unix memory management infrastructure.
The handout for this project can be found here.
The source code for a simple test program can be found here.