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.