throbber
versian
`5 .2
`
`Marshall Kirk McKusick
`George V. Nevill -Neil
`
`CSCO-1011
`Page 1 of 43
`
`

`

`LIBRARY OF CONGRESS
`
`Already widely used for Internet services and firewalls, high-availability
`servers, and general timesharing systems, the lean quality of
`FreeBSD also suits the growing area of embedded systems. Unlike
`Linux, FreeBSD does not require users to publicize any changes they
`make to the source code.
`
`11l11l11i11i11il
`
`111111111111111111111111
`9 780201 702453
`ISBN 0-201-70245-2
`$59.99 us
`$86. 99
`CANADA
`
`Page 2 of 43
`
`

`

`9333...min...
`
`Q :
`
`
`
`5=83:.5.—51753.533=3$33:
`
`Page 3 of 43
`
`Page 3 of 43
`
`

`

`
`
`
`
`Page 4 of 43
`
`Page 4 of 43
`
`

`

`ownlvnalmx...
`
`2%:
`
`Page 5 of 43
`
`Page 5 of 43
`
`
`

`

`
`
`_.
`
`[a
`
`Page 6 of 43
`
`Page 6 of 43
`
`

`

`The Design and Implementation of the
`Free BSD
`Operating System
`
`Marshall Kirk McKusick
`1,
`
`George V. Neville-Neil
`
`.,,,6T Addison-Wesley
`
`Boston
`
`Capetown
`
`• Toronto
`• New York
`• San Francisco
`London
`• Munich
`• Paris
`• Madrid
`• Sydney
`• Tokyo
`• Singapore
`• Mexico City
`
`• Montreal
`
`Page 7 of 43
`
`

`

`UNIX is a registered trademark of X/Open in the United States and other countries. Many
`of the designations used by manufacturer and sellers to distinguish their products are
`claimed as trademarks. Where those designations appear in this book, and Addison-Wesley
`was aware of a trademark claim, the designations have been printed with initial capital let-
`ters or in all capitals.
`
`The authors and publisher have taken care in the preparation of this book, but make no
`expressed or implied warranty of any kind and assume no responsibility for errors or omis(cid:173)
`sions. No liability is assumed for incidental or consequential damages in connection with
`or arising out o
`-of-the information or programs contained herein.
`
`McKusick, Mars all Kirk.
`The design and implementation of the FreeBSD operating system I Marshall
`Kirk McKusick, George V. Neville-Neil.
`p. cm.
`Includes bibliographical references and index.
`ISBN 0-201-70245-2 (he: alk. paper)
`1. FreeBSD. 2. Free computer software. 3. Operating systems
`(Computers) I. Neville-Neil, George V. II. Title.
`
`QA 76.76.063M398745 2004
`005.3--dc22
`
`2004010590
`
`Copyright © 2005 by Pearson Education, Inc.
`
`All rights reserved. No part of this publication may be reproduced, stored in a retrieval sys(cid:173)
`tem, or transmitted, in any form or by any means, electronic, mechanical, photocopying,
`recording, or otherwise, without the prior consent of the publisher. Printed in the United
`States of America. Published simultaneously in Canada.
`
`For information on obtaining permission for use of material from this work, please submit a
`written request to:
`Pearson Education, Inc.
`Rights and Contracts Department
`75 Arlington Street, Suite 300
`Boston, MA 02116
`Fax: (617) 848-7047
`
`Text printed on recycled and acid-free paper.
`ISBN 0-201-70245-2
`123 4 5 6 7 8 9 10-CRW-0807060504
`First Printing, July 2004
`
`Page 8 of 43
`
`

`

`.
`
`I
`
`-
`
`Dedication
`
`This book is dedicated to the BSD community.
`Without the contributions of that community's members,
`there would be nothing about which to write.
`
`Page 9 of 43
`
`

`

`
`
`Page 10 of 43
`
`Page 10 of 43
`
`

`

`Preface
`
`This book follows the earlier authoritative and full-length descriptions of the
`design and implementation of the 4.3BSD and 4.4BSD versions of the UNIX sys(cid:173)
`tem developed at the University of California at Berkeley. Since the final
`Berkeley release in 1994, several groups have continued development of BSD.
`This book details FreeBSD, the system with the largest set of developers and the
`most widely distributed releases. Although the FreeBSD distribution includes
`nearly 1000 utility programs in its base system and nearly 10,000 optional utilities
`in its ports collection, this book concentrates almost exclusively on the kernel.
`
`UNIX-like Systems
`
`UNIX-like systems include the traditional vendor systems such as Solaris and
`HP-UX; the Linux-based distributions such as Red Hat, Debian, Suse, and
`Slackware; and the BSD-based distributions such as FreeBSD, NetBSD, OpenBSD,
`and Darwin. They run on computers ranging from laptops to the largest super(cid:173)
`computers. They are the operating system of choice for most multiprocessor,
`graphics, and vector-processing systems, and are widely used for the original pur(cid:173)
`pose of timesharing. The most common platform for providing network services
`(from FTP to WWW) on the Internet, they are collectively the most portable oper(cid:173)
`ating system ever developed. This portability is due partly to their implementation
`language, C [Kernighan & Ritchie, 1989] (which is itself a widely ported lan(cid:173)
`guage), and partly to the elegant design of the system.
`Since its inception in 1969 [Ritchie & Thompson, 1978], the UNIX system
`has developed in several divergent and rejoining streams. The original developers
`continued to advance the state of the art with their Ninth and Tenth Edition UNIX
`inside AT&T Bell Laboratories, and then their Plan 9 successor to UNIX. Mean(cid:173)
`while, AT&T licensed UNIX System V as a product before selling it to Novell.
`Novell passed the UNIX trademark to X/OPEN and sold the source code and distri(cid:173)
`bution rights to Santa Cruz Operation (SCO). Both System V and Ninth Edition
`
`xix
`
`Page 11 of 43
`
`

`

`xx
`
`Preface
`
`UNIX were strongly influenced by the Berkeley Software Distributions produced
`by the Computer Systems Research Group (CSRG) of the University of California
`at Berkeley. The Linux operating system, although developed independently of
`the other UNIX vruiants, implements the UNIX interface. Thus, applications
`developed to run on other UNIX-ha ed platforms can be easily ported to run on
`Linux.
`
`Berkeley Software Distributions
`
`The di tributions from Berkeley were the first UNIX-based systems to introduce
`many important features including the fclloWifig:
`
`• Demand-paged virtual-memory support
`•Automatic configuration of the hardware and 1/0 system
`• A fast and recoverable filesystem
`•The socket-based interprocess-communication (IPC) primitives
`•The reference implementation of TCP/IP
`
`The Berkeley release found their way into the UNIX systems of many vendors
`and were used internally by the development groups of many other vendors. The
`implementation of the TCP/IP networking protocol suite in 4.2BSD and 4.3BSD,
`and the availability of those systems, played a key role in making the TCP/IP net(cid:173)
`working protocol suite a world standard. Even the non-UNIX vendors such as
`Microsoft have adopted the Berkeley socket design in their Winsock IPC interface.
`The BSD releases have also been a strong influence on the POSIX (IEEE Std
`1003. l) operating-system interface standard, and on related standards. Several
`features-such as reliable signals, job control, multiple access groups per process,
`and the routines for directory operations-have been adapted from BSD for
`POSIX.
`Early BSD releases contained licensed UNIX code, thus requiring recipients to
`have an AT&T source license to be able to obtain and use BSD. In 1988, Berkeley
`separated its distribution into AT&T licen ed and freely redistributable code. The
`freely redistributable code was licensed sepru·ately and could be obtained, used,
`and redistributed by anyone. The final freely redistributable 4.4BSD-Lite2 release
`from Berkeley in 1994 contained nearly the entire kernel and all the important
`libraries and utilities.
`Two groups, NetBSD and FreeBSD, sprang up in 1993 to begin supporting and
`distributing systems built from the freely redistributable releases being done by
`Berkeley. The NetBSD group emphasized portability and the minimalist approach,
`porting the systems to nearly forty platforms and pushing to keep the system lean
`to aid embedded applications. The FreeBSD group emphasized maximal support
`for the PC architecture and pushed to ease installation for, and market their system
`to, as wide an audience as possible. In I 995, the OpenBSD group split from the
`NetBSD group to develop a distribution that emphasized security. Over the years
`there bas been a healthy competition among the BSD distributions, with many
`ideas and much code flowing between them.
`
`Page 12 of 43
`
`

`

`Preface
`
`xxi
`
`Material Covered in this Book
`
`This book is about the internal structure of the FreeBSD 5.2 kernel and about the
`concepts, data structures, and algorithms used in implementing FreeBSD's system
`facilities. Its level of detail is similar to that of Bach's book about UNIX System v
`[Bach, 1986]; however, this text focuses on the facilities, data structures, and algo(cid:173)
`rithms used in the FreeBSD variant of the UNIX operating system. The book cov(cid:173)
`ers FreeBSD from the system-call level down-from the interface to the kernel to
`the hardware itself. The kernel includes system facilities, such as process man(cid:173)
`agement, virtual memory, the I/O system, filesystems, the socket IPC mechanism,
`and network protocol implementations. Material above the system-call level(cid:173)
`such as libraries, shells, commands, programming languages, and other user inter(cid:173)
`faces-is excluded, except for some material related to the terminal interface and
`to system startup. Following the organization first established by Organick's book
`about Multics [Organick, 1975], this book is an in-depth study of a contemporary
`operating system.
`Where particular hardware is relevant, the book refers to the Intel Personal
`Computer (PC) architecture. Because FreeBSD has emphasized development on
`the PC, that is the architecture with the most complete support, so it provides a
`convenient point of reference.
`
`Use by Computer Professionals
`
`FreeBSD is widely used to support the core infrastructure of many companies
`worldwide. Because it can be built with a small footprint, it is also seeing
`increased use in embedded applications. The licensing terms of FreeBSD do not
`require the distribution of changes and enhancements to the system. The licensing
`terms of Linux require that all changes and enhancements to the kernel be made
`available in source form at minimal cost. Thus, companies that need to control the
`distribution of their intellectual property build their products using FreeBSD.
`This book is of direct use to the professionals who work with FreeBSD sys(cid:173)
`tems. Individuals involved in technical and sales support can learn the capabilitie
`and limitations of the system; applications developers can learn how to effectively
`and efficiently interface to the system; system administrators without direct expe(cid:173)
`rience with the FreeBSD kernel can learn how to maintain, tune, and configure the
`system; and systems programmers can learn how to extend, enhance, and interface
`to the system.
`Readers who will benefit from this book include operating-system implemen(cid:173)
`tors, system programmers, UNIX application developers, administrators, and curi(cid:173)
`ous users. The book can be read as a companion to the source code of the system,
`falling as it does between the manual pages and the code in detail of treatment.
`But this book is neither exclusively a UNIX programming manual nor a user tuto(cid:173)
`rial (for a tutorial, see Libes & Ressler [1988]). Familiarity with the use of some
`version of the UNIX system (see, for example, Stevens [1992]) and with the C pro(cid:173)
`gramming language (see, for example, Kernighan & Ritchie [1989]) would be
`extremely useful.
`
`Page 13 of 43
`
`

`

`Page 14 of 43
`
`Page 14 of 43
`
`

`

`CHAPTER
`
`History and Goals
`
`1.1 History of the UNIX System
`
`The UNIX system has been in wide use for over 30 years and has helped to define
`many areas of computing. Although numerous individuals and organizations have
`contributed (and still contribute) to the development of the UNIX system, this book
`primarily concentrates on the BSD thread of development.
`
`• Bell Laboratories, which invented UNIX
`
`•The Computer Systems Research Group (CSRG) at the University of California
`at Berkeley, which gave UNIX virtual memory and the reference implementation
`of TCP/IP
`
`• The FreeBSD project, the NetBSD project, and the OpenBSD project, which con(cid:173)
`tinue the work started by the CSRG
`
`•The Darwin operating system at the core of Apple's OS X. Darwin is based on
`FreeBSD.
`
`Origins
`
`The first version of the UNIX system was developed at Bell Laboratories in 1969
`by Ken Thompson as a private research project to use an otherwise idle PDP-7.
`Thompson was joined shortly thereafter by Dennis Ritchie, who not only con(cid:173)
`tributed to the design and implementation of the system, but also invented the C
`programming language. The system was completely rewritten into C, leaving
`almost no assembly language. The original elegant design of the system [Ritchie,
`1978] and developments of the first 15 years [Ritchie, 1984a; Compton, 1985]
`have made the UNIX system an important and powerful operating system [Ritchie,
`1987].
`
`Page 15 of 43
`
`

`

`4
`
`Chapter l
`
`History and Goals
`
`Ritchie, Thompson, and other early UNIX developers at Bell Laboratories had
`worked previously on the Multics project [Peirce, 1985; Organick, 1975], which
`had a strong influence on the newer operating system. Even the name UNIX is
`merely a pun on Multics; in areas where Multics attempted to do many tasks,
`UNIX tried to do only one task but do it well. The basic organization of the UNIX
`filesystem, the idea of using a user process for the command interpreter, the gen(cid:173)
`eral organization of the filesystem interface, and many other system characteristics
`come directly from Multics.
`Ideas from various other operating systems, such as the Massachusetts Institute
`of Technology's (MIT's) CTSS, also have been incorporated. The fork operation to
`create new processes comes from Berkeley's GENIE (SDS-940, later XDS-940)
`operating system. Allowing a user to create processes inexpensively led to using
`one process per command rather than commands being run as procedure calls, as
`is done in Multics.
`
`Research UNIX - - - - -
`The first major editions of UNIX were the Research systems from Bell Laboratories.
`In addition to the earliest versions of the system, these systems include the UNIX
`Time-Sharing System, Sixth Edition, commonly known as V6, which in 1976 was
`the first version widely available outside of Bell Laboratories. Systems are identi(cid:173)
`fied by the edition numbers of the UNIX Programmer's Manual that were current
`when the distributions were made.
`The UNIX system was distinguished from other operating systems in three
`important ways.
`
`1. It was written in a high-level language.
`
`2. It was distributed in source form.
`
`3. It provided powerful primitives normally found in only those operating sys(cid:173)
`tems that ran on much more expensive hardware.
`
`Most of the system source code was written in C rather than in assembly lan(cid:173)
`guage. The prevailing belief at the time was that an operating system had to be
`written in assembly language to provide reasonable efficiency and to get access to
`the hardware. The C language itself was at a sufficiently high level to allow it to
`be compiled easily for a wide range of computer hardware, without its being so
`complex or restrictive that systems programmers had to revert to assembly lan(cid:173)
`guage to get reasonable efficiency or functionality. Access to the hardware was
`provided through assembly-language stubs for the 3 percent of the operating(cid:173)
`system functions-such as context switching-that needed them. Although the
`success of UNIX does not stem solely from its being written in a high-level lan(cid:173)
`guage, the use of C was a critical first step [Kernighan & Ritchie, 1978; Kernighan
`& Ritchie, 1989; Ritchie et al., 1978]. Ritchie's C language is descended [Rosler,
`1984] from Thompson's B language, which was itself descended from BCPL
`[Richards & Whitby-Strevens, 1980]. C continues to evolve [Tuthill, 1985; ISO,
`1999].
`
`Page 16 of 43
`
`

`

`Section 1.1
`
`History of the UNIX System
`
`The second important distinction of UNIX was its early releasf' from Bell
`Laboratories to other research environments in source form. By providing source,
`the system's founders ensured that other organizations would be able not only to
`use the system, but also to tinker with its inner workings. The ease with which
`new ideas could be adopted into the system always has been key to the changes
`that have been made to it. Whenever a new system that tried to upstage UNIX
`came along, somebody would dissect the newcomer and clone its central ideas
`into UNIX. The unique ability to use a small, comprehensible system, written in a
`high-level language, in an environment swimming in new ideas led to a UNIX sys(cid:173)
`tem that evolved far beyond its humble beginnings. Though recipients of the
`source code had to be licensed, campuswide licenses were cheaply available to
`universities. Thus, many people became versed in the way that UNIX worked, set(cid:173)
`ting the stage for the open-source world that would follow.
`The third important distinction of UNIX was that it provided individual users
`with the ability to run multiple processes concurrently and to connect these pro(cid:173)
`cesses into pipelines of commands. At the time, only operating systems running
`on large and expensive machines had the ability to run multiple processes, and the
`number of concurrent processes usually was controlled tightly by a system admin(cid:173)
`istrator.
`Most early UNIX systems ran on the PDP-11, which was inexpensive and
`powerful for its time. Nonetheless, there was at least one early port of Sixth
`Edition UNIX to a machine with a different architecture: the Interdata 7 /32
`[Miller, 1978]. The PDP-11 also had an inconveniently small address space. The
`introduction of machines with 32-bit address spaces, especially the VAX-111780,
`provided an opportunity for UNIX to expand its services to include virtual memory
`and networking. Earlier experiments by the Research group in providing UNIX(cid:173)
`like facilities on different hardware had led to the conclusion that it was as easy to
`move the entire operating system as it was to duplicate UNIX's services under
`another operating system. The first UNIX system with portability as a specific
`goal was UNIX Time-Sharing System, Seventh Edition (V7), which ran on the
`PDP-11 and the Interdata 8/32 and had a VAX variety called UNIX/32V Time(cid:173)
`Sharing, System Version 1.0 (32V). The Research group at Bell Laboratories has
`also developed UNIX Time-Sharing System, Eighth Edition (V8); UNIX Time(cid:173)
`Sharing System, Ninth Edition (V9); and UNIX Time-Sharing System, Tenth
`Edition (VlO). Their 1996 system is Plan 9.
`
`AT&T UNIX System III and System V
`
`After the distribution of Seventh Edition in 1978, the Research group turned over
`external distributions to the UNIX Support Group (USG). USG had previously di -
`tributed internally such systems as the UNIX Programmer's Work Bench (PWB),
`and had sometimes distributed them externally as well [Mohr, 1985].
`USG's first external distribution after Seventh Edition was UNIX System ill
`(System ill) in 1982, which incorporated feature of Seventh Edition, of 32V, and
`also of several UNIX systems developed by groups other than the Research group.
`Features of UNIX/RT (a real-time UNIX system) were included, as were many
`features from PWB. USG released UNIX System V (System V) in 1983; that
`
`Page 17 of 43
`
`

`

`Chapter 1
`
`History and Goals
`
`system is largely derived from System ill. The court-ordered divestiture of the
`Bell Operating Companies from AT&T permitted AT&T to market System V
`aggressively [Bach, 1986; Wilson, 1985].
`USG metamorphosed
`into
`the UNIX System Development Laboratory
`(USDL), which released UNIX System V, Release 2
`in 1984. System V,
`Release 2, Version 4 introduced paging [Jung, 1985; Miller, 1984], including
`copy-on-write and shared memory, to System V. The System V implementation
`was not based on the Berkeley paging system. USDL was succeeded by AT&T
`Information Systems (ATIIS), which distributed UNIX System V, Release 3, in
`1987. That system included STREAMS, an IPC mechanism adopted from V8
`[Presotto & Ritchie, 1985]. ATIIS was succeeded by UNIX System Laboratory
`(USL), which was sold to Novell in 1993. Novell passed the UNIX trademark to
`the X/OPEN consortium, giving the latter sole rights to set up certification stan(cid:173)
`dards for using the UNIX name on products. Two years later, Novell sold UNIX
`to The Santa Cruz Operation (SCO).
`
`Berkeley Software Distributions
`
`The most influential of the non-Bell Laboratories and non-AT&T UNIX develop(cid:173)
`ment groups was the University of California at Berkeley [DiBona et al., 1999].
`Software from Berkeley was released
`in Berkeley Software Distributions
`(BSD)-for example, as 4.4BSD. Berkeley was the source of the BSD name, and
`their distributions were the first distinct identity for the BSD operating system.
`The first Berkeley VAX UNIX work was the addition to 32V of virtual memory,
`demand paging, and page replacement in 1979 by William Joy and Ozalp
`Babaoglu, to produce 3BSD [Babaoglu & Joy, 1981]. The reason for the large vir(cid:173)
`tual-memory space of 3BSD was the development of what at the time were large
`programs, such as Berkeley's Franz LISP. This memory-management work con(cid:173)
`vinced the Defense Advanced Research Projects Agency (DARPA) to fund the
`Berkeley team for the later development of a standard system (4BSD) for DARPA's
`contractors to use.
`A goal of the 4BSD project was to provide support for the DARPA Internet
`networking protocols, TCP/IP
`[Comer, 2000]. The networking implementation
`was general enough to communicate among diverse network facilities, ranging
`from local networks, such as Ethernets and token rings, to long-haul networks,
`such as DARPA's ARPANET.
`We refer to all the Berkeley VAX UNIX systems following 3BSD as 4BSD,
`although there were really several releases: 4.0BSD, 4. lBSD, 4.2BSD, 4.3BSD,
`4.3BSD Tahoe, and 4.3BSD Reno. 4BSD was the UNIX operating system of choice
`for VAXes from the time that the VAX first became available in 1977 until the
`release of System V in 1983. Most organizations would purchase a 32V license
`but would order 4BSD from Berkeley. Many installations inside the Bell System
`ran 4.lBSD (and replaced it with 4.3BSD when the latter became available). A
`new virtual-memory system was released with 4.4BSD. The VAX was reaching
`the end of its useful lifetime, so 4.4BSD was not ported to that machine. Instead,
`4.4BSD ran on the newer 68000, SPARC, MIPS, and Intel PC architectures.
`
`Page 18 of 43
`
`

`

`Section 1.2
`
`BSD and Other Systems
`
`The 4BSD work for DARPA was guided by a steering committee that included
`many notable people from both commercial and academic institutions. The culmi(cid:173)
`nation of the original Berkeley DARPA UNIX project was the release of 4.2BSD in
`1983; further research at Berkeley produced 4.3BSD in mid-1986. The next
`releases included the 4.3BSD Tahoe release of June 1988 and the 4.3BSD Reno
`release of June 1990. These releases were primarily ports to the Computer
`Consoles Incorporated hardware platform. Interleaved with these releases were
`two unencumbered networking releases: the 4.3BSD Netl release of March 1989
`and the 4.3BSD Net2 release of June 1991. These releases extracted nonpropri(cid:173)
`etary code from 4.3BSD; they could be redistributed freely in source and binary
`form to companies that and individuals who were not covered by a UNIX source
`license. The final CSRG release requiring an AT&T source license was 4.4BSD in
`June 1993. Following a year oflitigation (see Section 1.3), the free-redistributable
`4.4BSD-Lite was released in April 1994. The final CSRG release was 4.4BSD-Lite
`Release 2 in June 1995.
`
`UNIX in the World
`
`The UNIX system is also a fertile field for academic endeavor. Thompson and
`Ritchie were given the Association for Computing Machinery Turing award for
`the design of the system [Ritchie, 1984b]. The UNIX system and related, specially
`designed teaching systems-such as Tunis [Ewens et al., 1985; Holt, 1983], XINU
`[Comer, 1984), and MINIX [Tanenbaum, 1987)-are widely used in courses on
`operating systems. Linus Torvalds reimplemented the UNIX interface in his freely
`redistributable Linux operating system. The UNIX system is ubiquitous in univer(cid:173)
`sities and research facilities throughout the world, and is ever more widely used in
`industry and commerce.
`
`1.2 BSD _and Other Systems
`
`The CSRG incorporated features from not only UNIX systems but from other oper(cid:173)
`ating systems. Many of the features of the 4BSD terminal drivers are from
`TENEX!fOPS-20. Job control (in concept-not in implementation) is derived from
`TOPS-20 and from the MIT Incompatible Timesharing System (ITS). The virtual(cid:173)
`memory interface first proposed for 4.2BSD, and finally implemented in 4.4BSD,
`was based on the file-mapping and page-level interfaces that first appeared in
`TENExtrOPS-20. The current FreeBSD virtual-memory system (see Chapter 5)
`was adapted from Mach, which was itself an offshoot of 4.3BSD. Multics has
`often been a reference point in the design of new facilities.
`The quest for efficiency was a major factor in much of the CSRG's work.
`Some efficiency improvements were made because of comparisons with the pro(cid:173)
`prietary operating system for the VAX, VMS [Joy, 1980; Kashtan, 1980).
`Other UNIX variants have adopted many 4BSD features. AT&T UNIX System
`V [AT&T, 1987), the IEEE POSIX.l standard [Pl003.l, 1988), and the related
`
`Page 19 of 43
`
`

`

`National Bureau of Standards (NBS) Federal Information Processing Standard
`(FIPS) have adopted the following.
`
`Chapter I
`
`History and Goals
`
`• Job control (Chapter 2)
`
`•Reliable signals (Chapter 4)
`
`• Multiple file-access permission groups (Chapter 6)
`
`• Filesystem interfaces (Chapter 8)
`
`The X/OPEN Group (originally con isting of only European vendors but now
`including most U.S. UNIX vendors) produced the XIOPEN Portability Guide
`[X/OPEN, 1987] and, more recently, the Spec 1170 Guide. These documents
`any of the utility programs available to
`specify both. the kernel interface and
`UNIX system users. When Novell purchased UNIX from AT&T in 1993, it trans(cid:173)
`ferred exclusive ownership of the UNIX name to X/OPEN. Thus, all systems that
`want to brand themselves as UNIX must meet the X/OPEN inte1face specifica(cid:173)
`tions. To date, no BSD system has ever been put through the X/OPEN interface(cid:173)
`specification tests, so none of them can be called UNIX. The X/OPEN guides
`have adopted many of the POSIX facilities. The POSIX. l standard is also an ISO
`International Standard, named SC22 WG15. Thus, the POSIX facilities have been
`accepted in most UNIX-like systems worldwide.
`The 4BSD socket interprocess-communication mechanism (see Chapter 11)
`was designed for portability and was immediately ported to AT&T System ill,
`although it was never distributed with that system. The 4BSD implementation of
`the TCP/IP networking protocol suite (see Chapter 13) is widely used as the basis
`for further implementations on systems ranging from AT&T 3B machines running
`System V to VMS to embedded operating systems such as VxWorks.
`The CSRG cooperated closely with vendors whose systems are based on
`4.2BSD and 4.3BSD. This simultaneous development contributed to the ease of
`further ports of 4.3BSD and to ongoing development of the system.
`
`The Influence of the User Community
`
`Much of the Berkeley development work was done in response to the user com(cid:173)
`munity.
`Ideas and expectations came not only from DARPA, the principal
`direct-funding organization, but also from users of the system at companies and
`universities worldwide.
`The Berkeley researchers accepted not only ideas from the user community
`but also actual software. Contributions to 4BSD came from universities and
`other organizations in Australia, Canada, Europe, Japan, and the United States.
`These contributions included major features, such as autoconfiguration and disk
`quotas. A few ideas, such as the fcntl system call, were taken from System V,
`although licensing and pricing considerations prevented the use of any code from
`System ill or System V in 4BSD. In addition to contributions that were included
`in the distributions proper, the CSRG also distributed a set of user-contributed
`software.
`
`Page 20 of 43
`
`

`

`'
`
`-
`
`_I _ _
`
`_
`
`_
`
`Section 1.3
`
`The Transition of BSD to Open Source
`
`An example of a community-developed facility is the public-domain time(cid:173)
`zone-handling package that was adopted with the 4.3BSD Tahoe release. It was
`designed and implemented by an international group, including Arthur Olson,
`Robert Elz, and Guy Harris, partly because of discussions in the USENET news(cid:173)
`group comp.std.unix. This package takes time-zone-conversion rules completely
`out of the C library, putting them in files that require no system-code changes to
`change time-zone rules; this change is especially useful with binary-only distribu(cid:173)
`tions of UNIX. The method also allows individual processes to choose rules rather
`than keeping one ruleset specification systemwide. The distribution includes a
`large database of rules used in many areas throughout the world, from China to
`Australia to Europe. Distributions are thus simplified because it is not necessary
`to have the software set up differently for different destinations, as long as the
`whole database is included. The adoption of the time-zone package into BSD
`brought the technology to the attention of commercial vendors, such as Sun
`Microsystems, causing them to incorporate it into their systems.
`
`1.3 The Transition of BSD to Open Source
`
`Up through the release of 4.3BSD Tahoe, all recipients of BSD had to first get an
`AT&T source license. That was because the BSD systems were never released by
`Berkeley in a binary-only format; the distributions always contained the complete
`source to every part of the system. The history of the UNIX system, and the BSD
`system in particular, had shown the power of making the source available to the
`users. Instead of passively using the system, they actively worked to fix bugs,
`improve performance and functionabty, and even add completely new features.
`With the increasing cost of the AT&T source licenses, vendors that wanted to
`build stand-alone TCP/IP-based networking products for the PC market using the
`BSD code found the per-binary costs prohibitive. So they requested that Berkeley
`break out the networking code and utilities and provide them under licensing
`terms that did not require an AT&T source license. The TCP/IP networking code
`clearly did not exist in 32N and thus had been developed entirely by Berkeley and
`its contributors. The BSD-originated networking , code and supporting utilities
`were released in June 1989 as Networking Release 1, the first freely redis(cid:173)
`tributable code from Berkeley.
`The licensing terms were liberal. A licensee could release the code modified or
`unmodified in source or binary form with no accounting or royalties to Berkeley.
`The only requirements were that the copyright notices in the source file be left
`intact and that products that incorporated the code include in their documentation
`that the product contained code from the University of California and its contribu(cid:173)
`tors. Although Berkeley charged a $1000 fee to get a tape, anyone was free to get
`a copy from somebody who already had it. Indeed, several large sites put it up for
`anonymous FTP shortly after it was released. Though the code was freely avail(cid:173)
`able, several hundred organizations purchased tapes, which helped to fund the
`CSRG and encouraged further development.
`
`Page 21 of 43
`
`

`

`10
`
`Networking Release 2
`
`Chapter 1
`
`History and Goals
`
`With the success of the first open-source release, the CSRG decided to see how
`much more of BSD they could spring free. Keith Bostic led the charge by solicit(cid:173)
`ing people to rewrite the UNIX utilities from scratch based solely on their pub(cid:173)
`lished descriptions. Their only compensation would be to have their name listed
`among the Berkeley contributors next to the name of the utility that they rewrote.
`The contributions started slowly and were mostly for the trivial utilities. But as
`the list of completed utilities grew, and Bostic continued to hold forth for contribu(cid:173)
`tions at public events such as Usenix, the rate of cont

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket