OS/161 SYS/161
GeneralOS/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.)
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).
The source code is in the SVN repository, we implemented three assignments in about 251 revisions. I am still writing the system calls in my free time. Eventually I am going to move on to the File system part of the code, implement a better file system. From this I’m hoping to be able to contribute to the linux kernel in the future.
No comments yet.