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. o print files by copying them into a "printer" directory o control processes by manipulating files in "proc" directory o 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 o 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. o No local storage, except for transient "files" such as the image of a running process. o 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. o No process migration; processes are explicitly started on a low-load CPU server, and they stay there. o Heterogeneity is handled with an sww-like mechanism. * File servers o Files are stored permanently on WORM drives (300GB); 600MB magnetic disk and 64MB RAM serve as two-level caches. o The high-speed connection to the CPU server makes cached files accessible very quickly. o Clients never cache data; the file server acts as a centralized cache, avoiding the cache consistency issue (but at what cost?). o 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 o Gnot terminals (specially designed) seem to be a lot like Sun 3's. o Diskless; no external storage. o Does not do computing; just local processing like the window manager. * Networks o CPU servers and file servers communicate with each other using 20MB/s connections (that's MBytes). o 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.