|
|
|
OS/161
OS/161 is a simplified operating system we use for teaching the
undergraduate
operating systems class. It includes a standalone kernel and a
simple userland, all written in C. It runs on a machine simulator,
System/161, that offers simplified but still realistic hardware
devices. (Neither OS/161 nor System/161 is in any way
affiliated with IBM.)
Before OS/161 was written, we used
Nachos in
our class. As a result, the
assignments
we give are rather similar, and OS/161 can probably be used in similar
class structures to Nachos. However, OS/161 itself has no relationship to
Nachos; it was written from scratch with a different set of goals in mind.
Current version of OS/161:
1.11.
(released September 13, 2005)
Current version of System/161:
1.14.
(released June 27, 2008)
OS/161 Features
Architectural features:
- BSD-like source tree and kernel build environment
- Portable kernel split into machine-dependent and machine-independent
portions
- Extensible device framework akin to that found in NetBSD
- VFS layer to allow multiple file system types
Code supplied:
- MIPS port (other ports under development)
- Device driver set for System/161
- Pass-through file system device to access host system's files
- Absolutely minimal virtual memory system
- Simple skeleton file system
- One sample system call implementation
- Simple round-robin scheduler
- In-kernel threads package
- Semaphore implementation
Code left for students:
- Lock and condition-variable implementation
- Process support and system call layer
- More interesting schedulers
- Virtual memory system
- Full-featured file system
- Network stack and any/all network-related code
- Other more advanced features (see our Assignment 5 for some
examples/suggestions).
System/161 features
- MIPS r2000/r3000 simulator, complete (including MMU)
except for cache effects
- Debugging support via remote gdb into the simulator
- Transparent kernel profiling
- Event tracing, as far down as the level of individual machine instructions
- Performance monitoring via an arbitrary external process
- Network interconnection of multiple simulators via hub161
- Simple but reasonably realistic bus and devices, with up to 31
configurable "expansion slots"
Read the paper from SIGCSE 2002.
Download the code.
Mailing lists
There are now three mailing lists for users of OS/161 and System/161:
-
os161-announce,
a read-only list for announcements of new versions and significant bugs;
-
os161-users,
an open list for discussion of the OS/161 base system, System/161, and
related issues, but not solutions to the programming assignments;
- and
os161-instructors,
a closed list for people teaching using OS/161 to discuss assignments,
solutions, grading, and other related issues.
Credits
OS/161 (and System/161) were written by David A. Holland, with contributions from
- Amos Blackman
- Alexandra Fedorova
- Ada T. Lim
- Georgi Matev
- Jay Moorthi
- Geoffrey Werner-Allen
|