I taught operating systems using this project in the fall of 1994.
It is a protected-mode OS for PC-clones. I distributed a
simple thread package, and students added various bells and whistles.
The programming to learning
ratio was higher than I prefer.
Handouts
The following programming assignments are in Latex source form.
The chief disadvantage of this is is that exposes my development
process, but it is also imperfectly beautiful.
-
First assignment, introduces the environment, and encourages people
to work on reconfiguring their PCs.
-
Second assignment, introduces the programming environment, and
includes the first actual simple programming.
-
Third assignment,
implement preemptive context switch.
This is actually fairly easy to do in this environment, because
the timer interrupt must be handled anyhow.
-
Problems sets 4,6,8, and 10 involved no programming.
-
Fourth programming assignment, on to processes.
Implement an `exec()' call.
Requires doing OS memory management and
a good system call mechanism first. Should have done those
separately; this was the first `too-demanding' problem.
-
Fifth programming assignment,
implement screen and keyboard routines.
This idea works well,
and I reused it in the PC-BIOS project.
-
Sixth programming assignment,
memory management using paging
It turns out to be too difficult to do demand paging without using the
x86 tasking primitives, which I eschew as an obstacle to understanding.
This project is thus too large to complete as given. Student efforts
resulted in overly flaky systems.
-
Last design assignment, Design a filesystem.
Designs didn't have to be implemented, so most designs contained more
blue sky than low-level detail. I've asked for
students to actually implement file-systems in
other courses, but
to do so here, I'd have had to provide a device driver.