OS/161 SYS/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.)

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.

Leave a Reply