20 Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable

Early History

Ken Thompson and Dennis Ritchie presented the first Unix paper
at the Symposium on Operating Systems Principles at Purdue University in
November 1973. Professor Bob Fabry, of the University of California at
Berkeley, was in attendance and immediately became interested in obtaining a
copy of the system to experiment with at Berkeley.

At the time, Berkeley had only large mainframe computer systems
doing batch processing, so the first order of business was to get a PDP-11/45
suitable for running with the then-current Version 4 of Unix. The Computer
Science Department at Berkeley, together with the Mathematics Department and
the Statistics Department, were able to jointly purchase a PDP-11/45. In
January 1974, a Version 4 tape was delivered and Unix was installed by
graduate student Keith Standiford.

Although Ken Thompson at Purdue was not involved in the
installation at Berkeley as he had been for most systems up to that time, his
expertise was soon needed to determine the cause of several strange system
crashes. Because Berkeley had only a 300-baud acoustic-coupled modem without
auto answer capability, Thompson would call Standiford in the machine room and
have him insert the phone into the modem; in this way Thompson was able to
remotely debug crash dumps from New Jersey.

Many of the crashes were caused by the disk controller's
inability to reliably do overlapped seeks, contrary to the documentation.
Berkeley's 11/45 was among the first systems that Thompson had encountered
that had two disks on the same controller! Thompson's remote debugging was the
first example of the cooperation that sprang up between Berkeley and Bell
Labs. The willingness of the researchers at the Labs to share their work with
Berkeley was instrumental in the rapid improvement of the software available
at Berkeley.

Though Unix was soon reliably up and running, the coalition of
Computer Science, Mathematics, and Statistics began to run into problems; Math
and Statistics wanted to run DEC's RSTS system. After much debate, a
compromise was reached in which each department would get an eight-hour shift;
Unix would run for eight hours followed by sixteen hours of RSTS. To promote
fairness, the time slices were rotated each day. Thus, Unix ran 8 a.m. to 4
p.m. one day, 4 p.m. to midnight the next day, and midnight to 8 a.m. the
third day. Despite the bizarre schedule, students taking the Operating Systems
course preferred to do their projects on Unix rather than on the batch
machine.

Professors Eugene Wong and Michael Stonebraker were both stymied
by the confinements of the batch environment, so their INGRES database project
was among the first groups to move from the batch machines to the interactive
environment provided by Unix. They quickly found the shortage of machine time
and the odd hours on the 11/45 intolerable, so in the spring of 1974, they
purchased an 11/40 running the newly available Version 5. With their first
distribution of INGRES in the fall of 1974, the INGRES project became the
first group in the Computer Science department to distribute their software.
Several hundred INGRES tapes were shipped over the next six years, helping to
establish Berkeley's reputation for designing and building real systems.

Even with the departure of the INGRES project from the 11/45,
there was still insufficient time available for the remaining students. To
alleviate the shortage, Professors Michael Stonebraker and Bob Fabry set out
in June 1974, to get two instructional 11/45's for the Computer Science
department's own use. Early in 1975, the money was obtained. At nearly the
same time, DEC announced the 11/70, a machine that appeared to be much
superior to the 11/45. Money for the two 11/45s was pooled to buy a single
11/70 that arrived in the fall of 1975. Coincident with the arrival of the
11/70, Ken Thompson decided to take a one-year sabbatical as a visiting
professor at the University of California at Berkeley, his alma mater.
Thompson, together with Jeff Schriebman and Bob Kridle, brought up the latest
Unix, Version 6, on the newly installed 11/70.

Also arriving in the fall of 1975 were two unnoticed graduate
students, Bill Joy and Chuck Haley; they both took an immediate interest in
the new system. Initially they began working on a Pascal system that Thompson
had hacked together while hanging around the 11/70 machine room. They expanded
and improved the Pascal interpreter to the point that it became the
programming system of choice for students because of its excellent error
recovery scheme and fast compile and execute time.

With the replacement of Model 33 teletypes by ADM-3 screen
terminals, Joy and Haley began to feel stymied by the constraints of the ed editor. Working from an editor named em that they had obtained from Professor George Coulouris at Queen Mary's College in London, they worked to produce the line-at-a-time
editor ex.

With Ken Thompson's departure at the end of the summer of 1976,
Joy and Haley begin to take an interest in exploring the internals of the Unix
kernel. Under Schriebman's watchful eye, they first installed the fixes and
improvements provided on the "fifty changes" tape from Bell Labs. Having
learned to maneuver through the source code, they suggested several small
enhancements to streamline certain kernel bottlenecks.

Early Distributions

Meanwhile, interest in the error recovery work in the Pascal
compiler brought in requests for copies of the system. Early in 1977, Joy put
together the "Berkeley Software Distribution." This first distribution
included the Pascal system, and, in an obscure subdirectory of the Pascal
source, the editor ex. Over the next year, Joy, acting
in the capacity of distribution secretary, sent out about thirty free copies
of the system.

With the arrival of some ADM-3a terminals offering
screen-addressable cursors, Joy was finally able to write
vi, bringing screen-based editing to Berkeley. He soon
found himself in a quandary. As is frequently the case in universities
strapped for money, old equipment is never replaced all at once. Rather than
support code for optimizing the updating of several different terminals, he
decided to consolidate the screen management by using a small interpreter to
redraw the screen. This interpreter was driven by a description of the
terminal characteristics, an effort that eventually became termcap.

By mid-1978, the software distribution clearly needed to be
updated. The Pascal system had been made markedly more robust through feedback
from its expanding user community, and had been split into two passes so that
it could be run on PDP-11/34s. The result of the update was the "Second
Berkeley Software Distribution," a name that was quickly shortened to 2BSD.
Along with the enhanced Pascal system, vi and termcap
for several terminals was included. Once again
Bill Joy single-handedly put together distributions, answered the phone, and
incorporated user feedback into the system. Over the next year nearly
seventy-five tapes were shipped. Though Joy moved on to other projects the
following year, the 2BSD distribution continued to expand. The final version
of this distribution, 2.11BSD, is a complete system used on hundreds of
PDP-11's still running in various corners of the world.

VAX Unix

Early in 1978, Professor Richard Fateman began looking for a
machine with a larger address space on which he could continue his work on
Macsyma (originally started on a PDP-10). The newly announced VAX-11/780
fulfilled the requirements and was available within budget. Fateman and
thirteen other faculty members put together an NSF proposal that they combined
with some departmental funds to purchase a VAX.

Initially the VAX ran DEC's operating system VMS, but the
department had gotten used to the Unix environment and wanted to continue
using it. So, shortly after the arrival of the VAX, Fateman obtained a copy of
the 32/V port of Unix to the VAX by John Reiser and Tom London of Bell Labs.

Although 32/V provided a Version 7 Unix environment on the VAX,
it did not take advantage of the virtual memory capability of the VAX
hardware. Like its predecessors on the PDP-11, it was entirely a swap-based
system. For the Macsyma group at Berkeley, the lack of virtual memory meant
that the process address space was limited by the size of the physical memory,
initially 1 megabyte on the new VAX.

To alleviate this problem, Fateman approached Professor Domenico
Ferrari, a member of the systems faculty at Berkeley, to investigate the
possibility of having his group write a virtual memory system for Unix. Ozalp
Babaoglu, one of Ferrari's students, set about to find some way of
implementing a working set paging system on the VAX; his task was complicated
because the VAX lacked reference bits.

As Babaoglu neared the completion of his first cut at an
implementation, he approached Bill Joy for some help in understanding the
intricacies of the Unix kernel. Intrigued by Babaoglu's approach, Joy joined
in helping to integrate the code into 32/V and then with the ensuing
debugging.

Unfortunately, Berkeley had only a single VAX for both system
development and general production use. Thus, for several weeks over the
Christmas break, the tolerant user community alternately found themselves
logging into 32/V and "Virtual VAX/Unix." Often their work on the latter
system would come to an abrupt halt, followed several minutes later by a 32/V
login prompt. By January, 1979, most of the bugs had been worked out, and 32/V
had been relegated to history.

Joy saw that the 32-bit VAX would soon make the 16-bit PDP-11
obsolete, and began to port the 2BSD software to the VAX. While Peter Kessler
and I ported the Pascal system, Joy ported the editors ex
and vi, the C shell, and the
myriad other smaller programs from the 2BSD distribution. By the end of 1979,
a complete distribution had been put together. This distribution included the
virtual memory kernel, the standard 32/V utilities, and the additions from
2BSD. In December, 1979, Joy shipped the first of nearly a hundred copies of
3BSD, the first VAX distribution from Berkeley.

The final release from Bell Laboratories was 32/V; thereafter
all Unix releases from AT&T, initially System III and later System V, were
managed by a different group that emphasized stable commercial releases. With
the commercialization of Unix, the researchers at Bell Laboratories were no
longer able to act as a clearing-house for the ongoing Unix research. As the
research community continued to modify the Unix system, it found that it
needed an organization that could produce research releases. Because of its
early involvement in Unix and its history of releasing Unix-based tools,
Berkeley quickly stepped into the role previously provided by the Labs.