CS 452/652 Kernel Project
(Part III - Full Kernel)
Add the following primitives to your kernel. Be sure to follow the
kernel specification when doing so.
- AwaitEvent
- Delay
- Get
- Put
Delay, RegisterAs, and WhoIs must be implemented outside
the kernel using server processes.
Your implementation of Get and Put should make
use of a serial server and associated processes.
Submit the following:
- Location of source code for the kernel, OS components and test programs;
- Complete documentation for your kernel; you may reuse
as much of your previously submitted documentation as you can,
linking it together and expanding on it as appropriate;
include an appendix explaining in point form any changes that
have been made to code submitted in earlier assignments;
- Write the following test program to test the primitives described above.
This test program should display the numbers 1,...,100 on the graphics
display. It should then start one ``ender'' process and 9 ``eater'' processes.
Each of the eater processes should be assigned a unique integer, i,
where i = 2,...,10 and should erase all multiples of i from the screen,
in ascending order, waiting i seconds between each erasure. When each of
the nine eater processes are done, they should determine, using the name server,the pid of the ender process, and send it the number they were assigned.
The ender, upon receiving messages from all nine processes,
should print the order in which the messages arrived.
- Why do the 9 eater processes finish in the order that they do? Be sure
to answer this question in your assignment write up.
- As part of your test suite for your clock and serial servers, provide an
implementation of Assignment 1 (the polling loops assignment) that uses your
kernel instead of polling.
- A full test suite for your kernel;
make sure you document your test suite, and describe the expected results;
- Timings for various kernel operations, as follows:
- Your fastest Send/Receive/Reply time
using a 16 byte message.
- Your fastest Send/Receive/Reply time
using a zero length message.
- The time required for an average Create request.
- An upper bound on the amount of time that interrupts could
be continuously disabled.
Explain in detail how these times were obtained.