Plan 9 From Bell Labs: Internals Seminar

This seminar was part of the Computer Science House Operating System Seminar Series. The OS Seminar series is a weekly two hour seminar covering the internals of many modern operating systems. For more information, visit the link above.


Plan 9 can be seen as the "next step" for many of the ideas first seen in Unix systems. It takes the devices as files concept further than Unix did. It's designed to utilize network resources more efficiently and transparently then Unix. In a Plan 9 network, there are three types of network resources; terminals, cpu servers, and file servers. Terminals are the user interface to the whole network. The cpu server exists for compute intensive processes such as compiling or rendering. The file server does nothing but manage filesystems.

At the kernel interface level, there are a whole host of system calls to support the new concepts embodied by the system. Using devices both local and remote is as simple as mounting a remote filesystem. Indeed, it literally is mounting a remote filesystem. An RPC protocol called 9P is used for remote filesystem requests. It is a stateful protocol, with all the benefits and drawbacks to such protocols.

The seminar will begin with a brief history of Plan 9, followed by an overview of the goals the designers were trying to meet with the new design. Beginning with the design goals, we'll delve into various aspects of the design such as the 9P protocol, the device driver interface, the system startup process, and the differences between the terminal, cpu server, and file server. We'll cover the kernel structure and reasons for that structure. The Plan 9 kernel is divided into machine dependent and machine independent parts. We'll end with where the split occurs and why, along with some of the tools used for configuring and building the system.

Tad Hunt