I. An Essential Unix Bibliography -------------------------------------------- 0. Understanding the Linux Kernel. Bovet, Cesati. O'Reilly. 2nd Edition. ISBN 0-596-00213-0. Dec. 2002. 0.1 Linux Device Drivers, Rubini, Corbet. O'Reilly. 2nd Edition. ISBN 0-596-00008-1. June 2001. 1. The Design of the UNIX Operating System. Maurice J. Bach Prentice-Hall. 1986. ISBN 0-13-201799-7. Describes internals of Unix with emphasis on system V.3, some information on BSD systems. Good introduction to file system, and process concepts. Excellent from pedagogical point of view, even if dated. Networking coverage is poor, though. 2. The Design and Implementation of the 4.3BSD UNIX Operating System. Leffler, McKusick, Karels, Quarterman. Addison-Wesley. 1989. ISBN 0-201-06196-1. A classic operating system book. Details of 4.3 BSD system (Vax); i.e., Unix system internals. Good discussion of architectural tradeoffs. Fair amount of information on sockets and network internals; especially TCP. May be better advised to look for that material in W. Richards Stevens below. 3. A Commentary On The Unix Operating System. J. Lions. Probably not obtainable at this time. Landmark in study of Unix and may still repay study. This is *how* operating system internals should be taught but typically you can't due to licensing restrictions. Source to v6 Unix (circa late 70's) and line-by-line commentary presented by University of South Wales author. 4. Unix Programmer's Manual - UPM System manual pages (man pages) plus whatever extra documentation is bundled in (traditional Unix documents like Shell Introduction by Bourne). Per system; e.g., Sun version from Sun. System V versions, from A.T.T. As available from Usenix Association/ 4.3BSD version, Nov. 1986. Description follows: 1. URM - User's Reference Manual 1 - commands, cc(1), ls(1), 6 - games, rogue(6) 7 - misc. 2. PRM - Programmer's Reference Manual 2 - kernel, read(2), fork(2) 3 - libraries, fread(3), strcpy(3) 4 - devices, rk(4), rflop(4) 5 - files, termcap(5), dbx(5), passwd(5), a.out(5) 3. SMM - System Manager's Manual sys admin how-to 8 - sys admin, fsck(8) 4. USD - User Supplementary Documents various unix documents/guides/tutorials 5. PS1 - Programmer Supplementary Docs, Part 1. papers focused on programming e.g., . Intro to 4.3BSD IPC . Advanced 4.3BSD IPC . Debugging with DBX 6. PS2 - Programmer Supplementary Docs, Part 2. some papers on historical aspects of Unix, particular critical papers by Thompson, Ritchie, and Kernighan. e.g. Unix I/O System - device driver basics. 7. Master Index you should have man pages available to you on line. man 1 cc man 2 fork man 3 strcmp man 4 tty man -k strcmp (apropos) Now available as 4.4 BSD manual set from O'Reilly. 5. Unix System Administration Handbook. Nemeth, et. al. Prentice Hall. 1995. 2nd Edition. ISBN 0-13-151051-7. Good coverage of Unix Sys Admin topics. More BSD oriented than System V. Topics include uucp, mail/sendmail, network admin., news, kernel configuration, and other sys. admin. chores. Network administration coverage is good. Some Solaris discussion but Solaris needs an encyclopedia of its own. 6. NFS/NIS. Stern. O'Reilly Handbook. 1991. ISBN 0-9371755-75-7 On NFS, NIS administration. Good coverage of network topics. Some internal info about how NFS works. General focus on sys. admin for networking. ORA also has a TCP book that you might look at. ORA has a lot of UNIX books for that matter. Quality is variable and they are sometimes shy about hard details since they think that might confuse the technical reader. 7. Brand X (manufacturer's) Unix internals info; especially drivers. Sun has manual chapter devoted to device drivers; *very good*. ATT books on Sys. V device drivers. 8. Writing a UNIX Device Driver. Egan/Teixeira. How to book for writing UNIX device drivers; character and block. Focuses on MASSCOMP system which appears to be hybrid S5/BSD. Has extra BSD info and info about kernel support routines. Reference only. 9. TCP/IP Illustrated, Volume II. W. Richard Stevens. Addison-Wesley 1995. ISBN-0-201-63354-X Volume I is about how the basic TCP/IP protocols work. Volume II is about implementation details in the 4.4BSD stack and is entirely devoted to how the TCP/IP networking stack is implemented in BSD UNIX (e.g., as in BSDI/FreeBSD/NetBSD and in an older sense SunOs). Appears to be an excellent book. 10. UNIX Systems for Modern Architectures. "Symmetric Multiprocessing and Caching for Kernel Programmers". Curt Schimmel. Addison-Wesley: 1994. ISBN 0-201-63338-8 Contents include: Introduction to Cache memory systems Multiprocessor Operating System Internals (for UNIX) master-slave spin-locked kernels semaphored kernels other MP primitives How MP systems work with Caches Useful since we have discussion of parallelism issues and o.s. design. 11. The Magic Garden Explained. "The Internals of UNIX System V, Release 4". Goodheart and Cox. 1994. Prentice-Hall. ISBN 0-1309811389. About 5.4 from ATT, no, wait Novell, no wait, SCO/HP but that may be out of date by now. Seriously, lots of useful information here about modern kernel design, file mgmt including vnodes, i/o system (lots of STREAMS info), process mgmt., System V ipc (semaphores, etc). X. "386BSD From the Inside Out". William Jolitz. Was promised but I never saw it. Heard about it? II. Closely Related Books On Operating Systems ------------------------------------------ 1. Operating Systems - Design and Implementation. Andrew S. Tanenbaum. Prentice-Hall. ISBN 0-13-637406-9. 1986. This is the "Minix" book. Minix is intended as a version 7 Unix system call compatible o.s. running on the IBM-pc. Provides basic operating system principles and illustrates them via architectural discussion and source from Tanenbaum's Minix system, v7 Unix as redesigned from the ground up by Andrew T and friends at the Free University in Amsterdam. Source is included in the book; code and binaries available for IBM-pc's. Good introductory o.s. text and much more. Especially good at the moment due to the fact that Minix is designed as a distributed operating system; i.e., according to the client-server model as a set of processes. Minix, unlike Unix is architectured according to modern o.s. design architecture precepts. 2. TCP/IP Illustrated, Volume 1, The Protocols. W. Richard Stevens. 1994. Addison-Wesley. ISBN 0-201-63346-9 Excellent book on the fundamental protocols used in TCP/IP, arp, IP, ICMP, TCP, UDP, DNS, NFS, FTP etc., etc. Includes useful traces of protocols in action done with "tcpdump" utility. For kernel internals, see Volume 2. This is *the* book for understand TCP/IP. Highly recommended. 3. Internetworking with TCP/IP. Douglas Comer. Prentice-Hall. 1991. ISBN 0-13-468505-9. 2nd edition. Covers internals of various networking topics, TCP, IP, routing, etc. IP networking. Comer has 3 books out now. Volume 1 is on TCP/IP -- how it works. Volume 2 is source for a TCP/IP stack as implemented for his pedagogical o.s. called "xinu". Volume 3 is on network applications; i.e., how to program clients and servers. 4. Unix Networking Programming. Stevens. ISBN 0-13-949876-1. Application network programming on Unix. Not internals, but externals. How to do application socket programming. Plenty of programming examples. Excellent book. 5. Linux. Lots of books on how to install and admin. I don't have a best pick here. Note that there is good information on the WWW including the Linux HOWTO documents. III. Related books/standards/magazines: ------------------------------------------ 1. The C Programming Language. Second Edition. Kernighan and Ritchie. Prentice Hall. ISBN 0-13-110163-3. 1988. New edition of Unix classic. Covers C programming language. Now includes material from Draft-proposed ANSI C standard. Grammar in back is (and has been) last word in C syntax. Grammar is now Yacc compatible. Necessary reference work. 2. The Unix Programming Environment. Kernighan/Pike. Prentice Hall. ISBN 0-13-937681-X. 1984. Old but a classic. Tries to explain all at the command level, file system basics, shell usage, filters, grep, awk, sed, shell programming, stdio, system calls, nroff/ms. General introduction to Unix and still quite valuable. Good reference work. 3. Advanced UNIX Programming, Marc Rochkind, Prentice-Hall, 1985, ISBN 0-13-011800-1 " Rochkind is a former Bell Labs UNIX guru who wrote SCCS back in the mid 70's. This book is exactly what the title states, basically an extremely thorough treatment of programming using the UNIX System Call Interface. System V, System III, V7, 4.2 BSD, and Xenix are all discussed. The system calls are organized functionally into chapters that cover file i/o, terminal i/o, process control, interprocess communication, and miscellaneous calls. The opening chapter is an overview of fundamental concepts of UNIX. Anytime I have a question on the usage of system calls I consult this book. The only problem with it is that it needs to be updated per System V Rel 3, 4.3 BSD and the efforts of Sun and AT&T to bring SunOS and System V together as well as the efforts in the UNIX 386 world. " 4. Advanced Programming in the UNIX Environment. W. Richard Stevens. ISBN 0-201-56317-7. 1992. Systems programming on UNIX. up to date, includes V.4 and 386BSD, + POSIX prototypes and information. Optional text for class now. Basic subject is Unix system programming at the application level -- dealing with system calls. It talks about SV.3 and V.4, BSD too. Here is a list of the chapters: 1. intro 2. Unix Standardization and Implementations 3. File I/O 4. Files and Directories 5. Standard I/O Library 6. System Data Files and Information 7. The Environment of a UNIX process 8. Process Control 9. Process Relationships 10. Signals 11. Terminal I/O 12. Advanced I/O select 13. Daemon Processes 14. Interprocess Communication 15. Advanced Interprocess Communication 16. A Database Library 17. Communicating with a Postscript Printer 18. A Modem Dialer 19. Pseudo Terminals 4. Posix Standard 1003.1 ANSI/IEEE Standard Portable Operating System Interface On Computer Environments. 1988. ISBN 1-55937-003-3. IEEE 345 East 47th Street New York, New York 10017 Important. Operating system interface standard. Basically Unix but leaves out networking/graphics devices. Started out as version 7 and then added various things from BSD, Sys 5 realms (e.g, job control, vs. fcntl(2)). Library interface is basically left to ANSI C standard. Has essential UNIX bibliography in back. Now we have COSE, or common os environment. 5. System V Interface Description. (SVID). Do we still have to worry about this? A.T.T. 1986. 3 Volumes. ISBN 0-932764-10-X. A.T.T. spec for system V. A.T.T Customer Info Center Attn. Customer Service Rep. P.O. Box 19901 Indianapolis, Indiana 46219 1-800-432-6600. 6. Usenix Association Conference Proceedings. Unix-related papers presented at various Usenix conferences held in the last ten years. Often new developments in Unix are presented at these conferences. ;login: is published bimonthly. office@usenix.org login@usenix.org Usenix association 2560 Ninth Street, Suite 215 Berkeley, CA 94710 Manual Order Dept: 415/528-8649 7 volume set@ $68 7. Unix Review Magazine issued monthly. Covers various topics of interest in Unix world. You probably can get it for free. 8. Sun Expert Free magazine with focus on SunOS and Solaris (more and more). Funny column in it about networking called "Mr. Protocol". 9. Linux Journal Not free, but may be useful. http://www.ssc.com