presotto@coma.att.com (07/31/90)
%
% Thanks to Dave Presotto for making this paper available. This appeared in
% the UKUUG proceedings and was mentioned in UNIX Today(!).
%
% I have included the introduction here. The full paper can be gotten by
% anonymous FTP from midgard.ucsc.edu (128.114.134.15). The file is
% pub/plan-9.ps.Z (PostScript). Let me know if there are any problems
% fetching or printing. --DL
%
Plan 9 from Bell Labs
Rob Pike
Dave Presotto
Ken Thompson
Howard Trickey
ABSTRACT
Plan 9 is a distributed computing environ-
ment. It is assembled from separate machines act-
ing as CPU servers, file servers, and terminals.
The pieces are connected by a single file-oriented
protocol and local name space operations. By
building the system from distinct, specialised
components rather than from similar general-
purpose components, Plan 9 achieves levels of
efficiency, security, simplicity, and reliability
seldom realised in other distributed systems.
This paper discusses the building blocks, inter-
connections, and conventions of Plan 9.
Introduction.
Plan 9 is a general-purpose, multi-user, portable distri-
buted system implemented on a variety of computers and net-
works. It lacks a number of features often found in other
distributed systems, including
(i) A uniform distributed name space,
(ii) Process migration,
(iii) Lightweight processes,
(iv) Distributed file caching,
(v) Personalised workstations,
(vi) Support for X windows.
Unhappy with the trends in commercial systems, we began a
few years ago to design a system that could adapt well to
changes in computing hardware. In particular, we wanted to
build a system that could profit from continuing improve-
ments in personal machines with bitmap graphics, in medium-
and high-speed networks, and in high-performance micropro-
cessors. A common approach is to connect a group of small
personal timesharing systems-workstations-by a medium-speed
network, but this has a number of failings. Because each
workstation has private data, each must be administered
separately; maintenance is difficult to centralise. The
machines are replaced every couple of years to take advan-
tage of technological improvements, rendering the hardware
obsolete often before it has been paid for. Most telling, a
workstation is a largely self-contained system, not special-
ised to any particular task, too slow and I/O-bound for fast
compilation, too expensive to be used just to run a window
system. For our purposes, primarily software development,
it seemed that an approach based on distributed specialisa-
tion rather than compromise could better address issues of
cost-effectiveness, maintenance, performance, reliability,
and security. We decided to build a completely new system,
including compiler, operating system, networking software,
command interpreter, window system, and (on the hardware
side) terminal. This construction would also offer an occa-
sion to rethink, revisit, and perhaps even replace most of
the utilities we had accumulated over the years.
Plan 9 is divided along lines of service function. CPU
servers concentrate computing power into large (not over-
loaded) multiprocessors; file servers provide repositories
for storage; and terminals give each user of the system a
dedicated computer with bitmap screen and mouse on which to
run a window system. The sharing of computing and file
storage services provides a sense of community for a group
of programmers, amortises costs, and centralises and hence
simplifies management and administration.
The pieces communicate by a single protocol, built above a
reliable data transport layer offered by an appropriate net-
work, that defines each service as a rooted tree of files.
Even for services not usually considered as files, the uni-
fied design permits some noteworthy and profitable simplifi-
cation. Each process has a local file name space that con-
tains attachments to all services the process is using and
thereby to the files in those services. One of the most
important jobs of a terminal is to support its user's cus-
tomised view of the entire system as represented by the ser-
vices visible in the name space.
To be used effectively, the system requires a CPU server, a
file server, and a terminal; it is intended to provide ser-
vice at the level of a departmental computer centre or
larger. The CPU server and file server are large machines
best housed in an air conditioned machine room with condi-
tioned power. The system's strengths stem in part from
economies of scale, and the scale we have in mind is large.
One of our goals, perhaps unrealisable, is to unite the com-
puting environment for all of AT&T Bell Laboratories (about
30,000 people) into a single Plan 9 system comprising
thousands of CPU and file servers spread throughout, and
clustered in, the company's various departments. That is
clearly beyond the administrative capacity of workstations
on Ethernets.
The following sections describe the basic components of Plan
9, explain the name space and how it is used, and offer some
examples of unusual services that illustrate how the ideas
of Plan 9 can be applied to a variety of problems.