Lions' Commentary on UNIX 6th Edition, with Source Code

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
A commentary on the Unix operating system
Brian Kernighan in 2012 at Bell Labs 2.jpg
Brian Kernighan holding a copy of Lions's Commentary
AuthorJohn Lions
Country
  • Australia (original)
  • United States (1996 reprint)
LanguageEnglish; also available in Chinese and Japanese
SubjectUnix operating system
GenreComputer Science
PublisherUniversity of New South Wales
Publication date
1976
OCLC36099640
005.43
LC ClassQA 76.76 .O63 L56

Lions' Commentary on UNIX 6th Edition, [1] 1976, by John Lions, with source code, [2] contained analytical commentary on the source code of the 6th Edition Unix computer operating system "resident nucleus"[3] (i.e., kernel) software, plus copy formatted and indexed by Lions, of said source code obtained from the authors at AT&T Bell Labs, commonly referred to as the Lions Book.[citation needed]

Itself an exemplar of the early success of UNIX as portable code for a publishing platform, Lion's work was typeset using UNIX tools, on systems running code ported at the University, similar to that which it documented, see page vi.[4]

It was commonly held to be the most copied book in computer science.[citation needed] Despite its age, "the Lions Book" is still considered an excellent commentary on simple, high quality code.

Lions' work was most recently reprinted in 1996 by Peer-To-Peer Communications,[5] and has been circulated, recreated or reconstructed variously in a number of media by other parties, eg see webpage of Greg Lehey.[4]

Lions Commentary on UNIX 6th Edition with Source Code 1996 reissue

Synopsis[edit]

UNIX Operating System Source Code Level Six is the kernel source code, lightly edited by Lions to better separate the functionality — system initialization and process management, interrupts and system calls, basic I/O, file systems and pipes and character devices. All procedures and symbols are listed alphabetically with a cross reference.

The code as presented will run on a PDP-11/40 with RK-05 disk drive, LP-11 line printer interface, PCL-11 paper tape writer and KL-11 terminal interface, or a suitable PDP-11 emulator, such as SIMH.

A Commentary on the UNIX Operating System starts with notes on UNIX and other useful documentation (the UNIX manual pages, DEC hardware manuals and so on), a section on the architecture of the PDP-11 and a chapter on how to read C programs. The source commentary follows, divided into the same sections as the code. The book ends with suggested exercises for the student.

As Lions explains, this commentary supplements the comments in the source. It is possible to understand the code without the extra commentary, and the reader is advised to do so and only read the notes as needed. The commentary also remarks on how the code might be improved.

History[edit]

John Lions with his students in 1980
A Japanese reprinting of John Lions A commentary on the Unix operating system and accompanying formatted source code displaying a license for use by certain licensees, and a directive to those licensess to restrict use by other parties, Unix operating system source code level six

The source code and commentary were printed in book form in 1977, after first being assembled in May 1976, as a set of lecture notes[3] for Lions's computer science courses (6.602B and 6.657G, mentioned in the introduction of the book) at the University of New South Wales.

UNSW had actually obtained UNIX source code in 1975, in response to a 1974 query to Dennis Ritchie at Bell.[6] Bell Labs was a subsidiary of AT&T, under restrictions owing to its monopolistic nature as a national telecommunications infrastructure provider, and not permitted to conduct business in any other field,[citation needed] and so was not at liberty to profit from sale of software,[citation needed] however UNIX was being provided under license by another AT&T subsidiary, Western Electric at least by 1977.[clarification needed]

The UNIX User's group, USENIX's newsletter, UNIX News, of March 1977,[3] announced the availability of the book to UNIX licensees. Note that the newsletter's own strongly worded circulation restriction notice, could only ever have applied within the framework of existing licenses to the licensees with agreements held with the mentioned organisations, not to non-licensees, as a matter of civil contract -- the newsletter displays no evidence of governmental authority of the type which might allow general suppression of circulation, such as national security Top Secret classification.)

Difficulty in keeping pace with the book's popularity, meant that by 1978 it was available only from AT&T Bell Labs.[citation needed]

For many years, the Lions book was the only UNIX kernel documentation available outside Bell Labs.[citation needed] Although the license of 6th Edition[citation needed] allowed classroom use of the source code, the license of 7th Edition[citation needed] specifically excluded such use, so subsequent to this, the book, based on the more liberally licensed version, spread widely through copy machine reproductions, made arguably under various excuses, including (but not limited to!) generous educational licensing terms afforded the publishing institution by the source code owner[citation needed], as well as various copyright exemptions protecting discussion of mathematical work, though in the shadow of increasing political pressure to erode such rights, as technological means to 'self-copy' -- and even self-publish -- works became cheaper, more efficient, and more prolific.[citation needed] UNIX itself, was one of these, having been a successful innovation financed at Bell in order to facilitate publishing of technical manuals in-house.[citation needed]

When AT&T announced UNIX Version 7 at USENIX in June 1979, the academic/research license no longer automatically permitted classroom use.

However, thousands of computer science students around the world spread photocopies. As they were not being taught it in class, they would sometimes meet after hours to discuss the book. Many pioneers of UNIX and open source had a treasured multiple-generation photocopy.[7]

Other follow-on effects of the license change included Andrew S. Tanenbaum creating Minix. As Tanenbaum wrote in Operating Systems (1987):

When AT&T released Version 7, it began to realize that UNIX was a valuable commercial product, so it issued Version 7 with a license that prohibited the source code from being studied in courses, in order to avoid endangering its status as a trade secret. Many universities complied by simply dropping the study of UNIX, and teaching only theory.

Various UNIX people, particularly Peter H. Salus, Dennis Ritchie and Berny Goodheart, lobbied Unix's various owners (AT&T, Novell, the Santa Cruz Operation) for many years to allow the book to be published officially. In 1996, the Santa Cruz Operation finally authorised the release of the twenty-year-old 6th Edition source code (along with the source code of other versions of "Ancient UNIX"), and the full code plus the 1977 version of the commentary was published by Peer-To-Peer Communications (ISBN 1-57398-013-7).[5] The reissue includes commentary from Michael Tilson (SCO), Peter Salus, Dennis Ritchie, Ken Thompson, Peter Collinson, Greg Rose, Mike O'Dell, Berny Goodheart and Peter Reintjes.

"You are not expected to understand this"[edit]

The infamous program comment "You are not expected to understand this" occurs on line 2238 of the source code (Lions' Commentary, p. 22) at the end of a comment explaining the process exchange mechanism. It refers to line 325 of the file slp.c.[8] The source code reads:[9]

        /*
         * If the new process paused because it was
         * swapped out, set the stack level to the last call
         * to savu(u_ssav).  This means that the return
         * which is executed immediately after the call to aretu
         * actually returns from the last routine which did
         * the savu.
         *
         * You are not expected to understand this.
         */
        if(rp->p_flag&SSWAP) {
                rp->p_flag =& ~SSWAP;
                aretu(u.u_ssav);
        }

A major reason why this piece of code was hard to understand was that it depended on a quirk of the way the C-compiler for the PDP-11 saved registers in procedure calls. This code failed when ported to other machines and had to be redesigned in Version 7 UNIX.[10] Dennis Ritchie later explained the meaning of this remark:[9]

"You are not expected to understand this" was intended as a remark in the spirit of "This won't be on the exam," rather than as an impudent challenge.

See also[edit]

xv6, a modern reimplementation of Sixth Edition UNIX in ANSI C for multiprocessor x86 and RISC-V systems.

References[edit]

  1. ^ Lions, John (1976–1977). A commentary on the Unix operating system. University of New South Wales: Department of Computer Science.CS1 maint: date format (link)
  2. ^ Unix operating system source code level six. University of New South Wales: Department of Computer Science. 1976–1977.CS1 maint: date format (link)
  3. ^ a b c "UNIX News". USENIX. Mar 1977. Cite magazine requires |magazine= (help)
  4. ^ a b Lehey, Greg (2015-09-14). "Commentary on the Sixth Edition UNIX Operating System". Greg Lehey, Warren Toomey.
  5. ^ a b "Peer-to-Peer books: Lions' Commentary on UNIX". Archived from the original on 2018-11-16. Retrieved 2020-01-12.
  6. ^ Faculty of Engineering, UNSW, (Dean) (2020-09-18). "Remembering Ken Robinson". University of New South Wales: Engineering.
  7. ^ "Lions Book". Jargon File. December 29, 2003. Retrieved 2020-01-11.
  8. ^ Ken Thompson. "unix-history-repo/usr/sys/ken/slp.c". Retrieved 2018-10-12.
  9. ^ a b Dennis Ritchie (2002-06-22). "Odd Comments and Strange Doings in Unix". Retrieved 2021-05-14.
  10. ^ Johnson, S. C.; Ritchie, D. M. (1978). "UNIX Time-Sharing System: Portability of C Programs and the UNIX System" (PDF). Bell System Technical Journal. 57 (6): 2021–2048. doi:10.1002/j.1538-7305.1978.tb02141.x.

Further reading[edit]