Michael G. Brown
Department of Premier and Cabinet
Tasmania, Australia
The Berkeley Software Distributions have been highly influential in the development of the Unix operating system. This paper reviews some of the benefits that have been gained from the work at Berkeley, the position of Berkeley Unix with the advent of System V Release 4, and the future of BSD with the release of unencumbered Unices.
Unix came into being at Bell Telephone Laboratories, Murray Hill, New Jersey in 1969, when Ken Thompson, one of the developers of the Multics system decided to create a nice programming environment. Originally developed on an unused DEC PDP-7, interest grew rapidly, and soon Dennis Ritchie joined Thompson, and the operating system was ported to the new DEC PDP-11.
To ease the transition to the PDP-11, the port involved a rewrite of the majority of the operating system in Ritchie's new language C. The port to the C language can be regarded as one of the crucial steps that made the new operating system a success.
At this time it was common practice for an operating system to be developed specifically for a given processor architecture, and in order to take full advantage of the hardware, large tracts of code were written in the local assembly language. C was different. It was a sufficiently high level language to provide for portabilty, and ease of implementation of advanced data structures, but low level enough to allow access to the hardware. C was also simple enough that the compiler was easily portable to new architectures. The C implementation of Unix provided stub routines for the 3 percent of the code that had to be written in assembler.
Unix continued to be developed at Bell Labs as a series of Research Editions. By mid-1976, Unix had reached Sixth Edition. It was at this stage that AT&T began to make source code to the operating system available to research institutions at negligible cost. The release of the source gave these organisations the ability to modify the Unix internals at will, adding new features or tuning existing abilities.
In 1978, AT&T released Seventh Edition Unix, and also a port to the DEC Vax, known as 32V. These were the last of the Research Editions to be released from Bell Labs. At this point Unix began to split into three distinct streams.
With the release of Seventh Edition, the Research group turned distribution over to AT&T's newly formed Unix Support Group, which over time became Unix System Laboratories, the current owner of the Unix operating system. Also with the release of Seventh Edition, Unix development began in earnest at the University of California at Berkeley. Earlier work had been carried out on Sixth Edition at Berkeley, and this was integrated into the 3BSD release of late 1978.
The third stream of Unix development remained at Bell Labs, with the continued evolution of Research Unix. Since that time, major releases of Unix have came from both USL and its forebears and from Berkeley. Since the release of System III, USL has rolled some of the work from Berkeley back into their mainstream product, with the culmination at the current System V, Release 4, which had as one of its aims the marriage of BSD and USL Unix into one standard operating system.
In 1978-79 work began at the University of California at Berkeley on the Unix operating system. Many researchers at universities worldwide had taken advantage of AT&T's generous offer to furnish source for Unix at negligible cost - early source licences cost of the order of US$100.
The initial work at Berkeley resulted in 1BSD and 2BSD for the PDP-11. The limited memory space of the PDP-11 machines constrained the early works, although many small efficiences were made in the kernel, and some programs were added, including Bill Joy's now legendary visual text editor, vi, in 2BSD.
Early work at Berkeley was largely technology driven, and researchers were developing software that required large memory systems, for example, Berkeley's LISP implementation. The availability of the 32V port of Seventh Edition to the Vax was the opportunity the Berkeley researchers had been waiting for. The Vax included a large virtual memory space, which was utilised in DEC's new VMS operating system, as opposed to the constrained, segmented architecture of the PDP-11.
In 1978, Bill Joy and Ozalp Babaoglu embarked on the development of 3BSD, which aimed to add virtual memory, page replacement and demand paging to Unix, in addition to the traditional process swapping which had been inherited from the mainstream product. It was not until the release of SVR2, in 1984 that these features were added to USL's commercial product.
The success of 3BSD attracted the attention of the United States Defence Advanced Research Projects Agency, which funded Berkeley's later work with the aim of producing an advanced, standard Unix system for defense contractors. The DARPA work was overseen by a committee consisting of representatives from both academia and the commercial world, which resulted in a Unix implementation that was balanced between research and user demand. The DARPA funding enabled the development of 4BSD - major releases with new features being even numbered - 4.0, 4.2 and now 4.4, and the odd numbered, predominantly bug fix and performance enhancement releases - 4.1 and 4.3.
4.0BSD, released late in 1979, had as its main design goals a redesign and reimplementation of the virtual memory system, standard terminal and screen handling routines, and support for a large number of device drivers. The addition of screen handling may seem an insignificant feature, but within the structure of Berkeley's funding it was one of the essential elements - an array of contractors were developing software for a multitude of end user environments, and only the independent screen handling provided by Berkeley's termcap(5) screen handling system could save costly site specific customisation.
As previously noted, BSD led USL's introduction of virtual memory into Unix by half a decade, although the VM system finally used in SVR2 was not derived from Berkeley, and included shared memory and semaphore capabilities. USL took Berkeley's termcap idea, and created the similar, although incompatible, terminfo package.
The end of 1980 saw the release of 4.1BSD. Although primarily a maintanance release, 4.1 introduced job control, a system of run-time autoconfiguration and provided for longer identifiers in the symbol table of object files. The auto-configuration process was the precursor to the dynamic loadable device drivers in SVR4 today.
With Berkeley's autoconfiguration code, a probe routine was called for each device configured into the kernel. If the tests performed by this routine indicated the presence of the device, then the kernel would configure the device, allocating any required buffers, establishing interrupt vectors, etc. If the device was not present, no dynamic memory was allocated to the system. This autoconfiguration process permitted the same kernel to run on multiple machines, minimising the administrative need to know precisely what hardware or memory architecture was available on a given box.
4.2BSD became available in February, 1984, and with it came reliable signals, networking, inter-process communication and the Berkeley fast file system. Networking support in 4.2 became the reference model for networking within the DARPA Internet, and Berkeley's implementation of TCP/IP is still the primary standard for communications within the Internet.
The fast file system provided not only major speed enhancements for disk based file systems, it also added long file names, large (2GB) file sizes, and support for multiple simultaneous group membership. The signal implementation in 4.2BSD has now become the model for signals in the IEEE 1003.1 POSIX specification. Multiple group membership and BSD signals have also been adopted by the POSIX committee. The socket paradigm for inter-process and network communication has also been widely adopted outside of Berkeley. 4.2BSD is the basis for many vendor's Unix implementation, including Sun Microsystems SunOS up to and including SunOS 4.1.3.
1987 heralded the release of 4.3BSD, inspired mainly by problems with 4.2BSD. Until this year, 4.3BSD has been the standard release from Berkeley, although there have been three minor releases, 4.3BSD-Tahoe, 4.3BSD-Reno, and 4.3BSD-Net/2. The original 4.3 release fixed many problems, particularly in the networking code. Most of these networking fixes were a result of 4.2 being released before many of the networking standards were fully defined, and assumptions being made by the developers which proved incorrect.
The later releases included support for the Computer Console Inc.'s processors, and some minor fixes. The Reno release saw the introduction of some major changes in the filesystem layout, which, with the release of SVR4, results in an almost identical top level directory structure for the two operating systems. The Net/2 release added a re-implementation of Sun Microsystems Network File System, and support for OSI networking.
Generally, the SVR4 policy appears to be one of giving the user a choice of environment. If a user prefers a Berkeley-style environment, he simply places /usr/ucb before /usr/bin in his path, and precedes to operate as if he were on a traditional BSD system. Conversley, a System V users places /usr/bin before /usr/ucb, and his environment will correspond with that which he is used to.
The most significant difference between SVR4 and BSD is noticed by the System Administrator. Where most Berkeley administrative functions are performed by updating a text file, and signaling a daemon, the System V tradition requires interaction with the system through either some kind of administrative shell, or by entering unwieldy, multi-argument commands at the shell. As a general rule, a user moving from a BSD environment will not see much change, an administrator will.
Most Unix vendors are now committed to supporting SVR4. Many people now believe that the future of the BSD releases of Unix is non-existent. To some extent this is the case. The move to SVR4 is essential to any vendor who wishes to compete in the commercial Unix world. SVR4 is, however, still an expensive proposition for the user of off-the-shelf commodity hardware. An unlimited user licence for SVR4 will cost not less than $2,000 - and by the time support and upgrade costs are factored in, the software cost could well exceed that of the hardware on which it runs. The general perception of SVR4 is as a commercial oriented, businesslike operating system. BSD is traditionally aimed at the academic user, or the hacker.
An organisation that wishes to run a high availabilty system with commercial software packages, such as database servers, must consider and favour SVR4. However many functions in an organisation cannot justify the cost of these high availabilty systems for functions that have been traditionally performed by BSD systems in the academic and network world - functions such as mail serving, news serving, or even for low cost X-terminal systems. The saviour, if you will, of BSD systems could well be free Unix.
The first was Linux, developed from scratch by Linus Torvalds, a student at the University of Helsinki, Finland. Intended as a System V Release 2 work-alike, Linux has developed from a simple task switcher into a comprehensive operating system supporting networking and X-windows.
The second announcement came from William Jolitz, and told of the availabilty of a port of 4.3BSD-Net/2 to the Intel 386 processor, with full, unencumbered source. Jolitz had developed and contributed an implementation of BSD for the 386 to Berkeley, which had been included in Net/2. However, Net/2 contained some proprietry USL source code, and could not be distributed in full without a source licence from USL. What Jolitz had done was to take the unencumbered part of Net/2 and add to it enough support to create a stand alone operating system - and he was giving it away.
The response was overwhelming, and while the initial release was notoriously unstable - it was released as 386BSD 0.0 - it was not long before a much improved release became available, 386BSD 0.1. With the easy availabilty of the package, and the availabilty of source, a large user community quickly began improving the software. Being largely based on the BSD Net/2 release, 386BSD had support for networking, the fast file system and NFS built in. Most publically available software was easily ported - X became available almost immediately. Since the original release of 386BSD, several groups have emerged, with differing aims for the package.
William Jolitz, the original developer, is developing 386BSD 0.2, which is intended as a research stream. It will include facilities such as dynamic shared libraries, and perhaps dynamically loadable device drivers. Another group, calling itself FreeBSD, aims to produce a stable product, which includes the most up to date compilers, applications etc, available through the Internet and in easy-install CD-Rom editions. The third major group, calling itself NetBSD is producing a collaborative effort, situated somewhere between the other two in terms of research/stability, and providing frequent snapshots over the internet.
In addition to these groups, all concentrating on the Intel platform, other groups are in existence who plan on porting to other platforms, including the Motorola 68000, Sparc, and the HP-900 series of machines.
The push of Unix vendors into the commercial environment has resulted in the standardisation on System V Release 4 as the Unix of the 1990s. It is improbable that we will see a major vendor turn away from System V Release 4, in favour of BSD in the future. However, vendors such as Sun Microsystems, who have traditionally offered BSD derived systems, are experiencing some trouble convincing users to move to the new environment. Indeed, Sun's current BSD derived system, 4.1.3, is more stable than their SVR4 offering, so it is possible that Sun will continue to support their BSD environment for some time.
The proliferation and continued development of the freely
redistributable implementations of BSD guarantee the continuation
of the Berkeley tradition within the Unix community. The existence
of such an operating system, in source form, makes it highly likely
that students of operating system design will continue to study
and, inevitably, improve upon BSD. The availabilty of a free,
fully featured, publically supported operating system on
commodity hardware should ensure the continued use of BSD Unix
for non-mission critical applications, such as network mail and
news routing, provision of low-cost X-windows support, printer
serving, etc. It is unlikely that we have heard the last of the
Berkeley Software Distributions of Unix.
MGB's Home Page