Berkeley Software Distribution (BSD): A History
Berkeley Software Distribution (BSD)
What is BSD?
BSD stands for Berkeley Software Distribution and is used to identify an operating system derived from Unix. It originated from contributions made to Unix by the University of California at Berkeley.
History of BSD
Early Years and PDP-11
In the early years of Unix, its creators, Bell Labs of AT&T, authorized the University of California at Berkeley and other universities to use the source code and adapt it to their needs. During the 1970s and 1980s, Berkeley used the system for their research in operating systems. When AT&T withdrew permission for commercial use, the university promoted the creation of a version inspired by Unix using their contributions, allowing distribution for academic purposes and later reducing restrictions on copying, distribution, or modification.
1BSD
1BSD was an addition to the Sixth Edition Unix rather than a complete operating system. Main components were a Pascal compiler and a text editor.
2BSD
2BSD, launched in 1978, included updated versions of 1BSD and two new programs: the vi text editor and the C shell. Later versions of 2BSD contained adaptations for the VAX architecture.
2.9BSD
2.9BSD from 1983 included code from 4.1BSD and was considered a complete operating system (a modified Version 7 Unix). The most recent, 2.11BSD, was released in 1992, with updates from volunteers continuing until 2003.
VAX Versions
3BSD
A VAX computer was installed in Berkeley in 1978. The port of Unix to the VAX architecture, UNIX/32V, did not use the virtual memory capacity of this architecture. The kernel of 32V was largely rewritten by Berkeley students to use virtual memory, and 3BSD was launched in late 1979. It included a new kernel, 2BSD adjustments to the VAX architecture, and utilities from 32V. BSD 3 was also called Virtual VAX/UNIX or VMUNIX (Virtual Memory Unix), and BSD kernel images were named /vmunix until 4.4BSD.
4BSD
4BSD, released in November 1980, offered many improvements over 3BSD, including the csh shell, delivermail (the antecedent of sendmail), “reliable” signals, and the Curses programming library.
4.1BSD
4.1BSD, released in June 1981, was a response to criticisms of BSD compared with VMS. It was improved until it achieved the same benefits as VMS. The distribution was to be called 5BSD initially but was changed to avoid confusion with Unix System V from AT&T.
4.2BSD
4.2BSD took two years to implement and had two major improvements. Before its official release came three intermediate versions: 4.1a incorporated a modified version of the preliminary implementation of TCP/IP. 4.1b included the new Berkeley Fast File System, and 4.1c was a domestic version used during the last months of the development of BSD 4.2. The official release of BSD 4.2 was in August 1983. It was the first version released since Bill Joy co-founded Sun Microsystems. Mike Karels and Marshall Kirk MacKusick took control of the project from then on. It also marked the debut of the BSD daemon mascot.
4.3BSD
BSD 4.3 was launched in June 1986. Its main changes were the improvement of many new contributions of 4.2BSD. Before its release, the implementation of TCP/IP had diverged considerably from the official implementation. After many tests by DARPA, it was concluded that the version included in BSD 4.2 was superior and should be retained. After version 4.3, it was determined that future versions should be built based on a different architecture than the VAX. The Power 6/32 seemed the most promising platform but was abandoned by its developers. However, the adaptation to this platform by BSD, 4.3-Tahoe, proved the worth of the separation between machine-dependent code and independent code, allowing for future portability.
Net/2 and Legal Troubles
After Net/1, Keith Bostic proposed that more non-AT&T sections of BSD be released under the same license as Net/1. A project began that aimed to implement many of the standard Unix utilities without code from AT&T. Within 18 months, all AT&T utilities were replaced, and only a few proprietary files remained in the kernel. These files were removed, resulting in Net/2, almost a complete operating system that was freely distributable.
Net/2 was the basis for two separate ports of BSD to the Intel 80386 architecture: 386BSD and BSD/386 (later renamed BSD/OS). 386BSD was short-lived but was the starting point of FreeBSD and NetBSD.
BSDi soon had legal trouble with AT&T, who owned the rights to System V Unix. The lawsuit was filed in 1992, and the distribution of Net/2 was halted until the validity of claims could be determined.
The lawsuit slowed development of the free descendants of BSD for nearly two years, during which their legal status was in question, and because of this, gained greater support. Linux development started at the same time, and Linus Torvalds has said that had there been a free Unix-based operating architecture for 386, he probably would not have created Linux.
4.4BSD and Descendants
The lawsuit was settled in January 1994 in favor of Berkeley. Of the 18,000 files, only three were removed and 70 modified to show AT&T’s proprietary rights.
In June 1994, 4.4BSD was released in two versions: 4.4BSD-Lite, without proprietary code, and 4.4BSD-Encumbered, for AT&T licensees only.
Karnaugh Maps
Karnaugh maps are Venn diagrams with tables arranged in different regions within a rectangle. They are used to simplify Boolean functions and circuits.
Simplifying a circuit consists of finding the Boolean function representing the circuit, simplifying the function, and drawing the circuit of the simplified function.
There are some problems with circuit simplification. Sometimes it may be difficult to determine which circuit is simpler based only on the Boolean function. The best circuit may depend on the relative cost of logic gates and switches required.
If using only the laws of Boolean algebra, a possible simplification could be omitted. It is also possible that a step is easier to recognize when expressed in terms of dual laws. Another simplification method is to take the dual of a function f, simplify the resulting expression, and take the dual again. This generally results in a simpler form of the original function f.