Plan 9 from Bell Labs
Pike, Presotto, Thompson, Trickey
Overview
- Don't use generic workstations hooked up in a network; use dedicated
compute servers, file servers, and terminals (memories of mainframes...).
- Build a completely new system, software and hardware (but it looks a lot
like Unix, at least superficially).
- All services appear to be presented as a filesystem; all operations are
performed with file operations; e.g.
- print files by copying them into a "printer" directory
- control processes by manipulating files in "proc" directory
- interact with devices by accessing files in "dev" directory
- The filesystems presented by different servers can be attached (mounted)
together, to produce an apparent single file hierarchy, called a name space.
Each process can have a separate name space.
The pieces
- CPU servers
- Expensive computing, such as compiling, is done on the CPU server, which
is a fast multiprocessor with a very fast connection to the file server.
- No local storage, except for transient "files" such as the image of a
running process.
- Doing work on the CPU server is merely a performance issue, not one of
correctness: a process executing on the CPU server or on the user's terminal
executes in the same environment.
- No process migration; processes are explicitly started on a low-load CPU
server, and they stay there.
- Heterogeneity is handled with an sww-like mechanism.
- File servers
- Files are stored permanently on WORM drives (300GB); 600MB magnetic disk
and 64MB RAM serve as two-level caches.
- The high-speed connection to the CPU server makes cached files
accessible very quickly.
- Clients never cache data; the file server acts as a centralized cache,
avoiding the cache consistency issue (but at what cost?).
- The file server provides read-only access to "snapshots" of the
filesystem as it was at certain times in the past, without any special
dump/restore handling.
- Terminals
- Gnot terminals (specially designed) seem to be a lot like Sun 3's.
- Diskless; no external storage.
- Does not do computing; just local processing like the window manager.
- Networks
- CPU servers and file servers communicate with each other using 20MB/s
connections (that's MBytes).
- Other links are not as critical; generally, about 120-150KB/s.
Systems
- Proc file system is a lot like Linux's (well, the other way around).
- Window system provides a text console, mouse input, and bitmapped display
device for each window.