Project 1: A Multiprocessing Kernel for the WC34020

Due: Monday, October 27, 1997
For the first of the two "major" programming projects for this course, I would like you to implement a simple multiprocessing kernel for the WC34020, write device driver processes for the machine's terminal's based on the kernel's primitives and test the whole thing with several sample "user" programs.

The code you produce will be one program (physically), but it will have three distinct sub-parts:

The Kernel
which contains the actual code that implements primitives for process creation and message passing;
The I/O System
composed of processes and "library routines" (with familiar names like putc and getc) built on top of the kernel primitives; and
User Code
which can use a combination of kernel and system primitives to create processes, do input/output, etc.
In this document, I will try to discuss each component relatively separately. The description in this handout will be fairly detailed. I will specify exactly how each primitive is to be parameterized and even give C declarations for the major kernel data structures. This is intended to guide you toward a clean, well organized implementation rather than burden you with the task of living with my design. If you want to change details of my design, feel free to discuss this possibility with me.