Computer Programming Reading List HOWTO
Version 0.8.7
Edited by Cong Wang
Table of contents
|--FAQ
|--Books on C Programming
|--Books on C++ Programming
|--Books on Java
|--Books on Perl
|--Books on Good Programming Style
|--Books on Unix/Linux, History and Culture
|--Books on Networks and Internet
|--Books on Assembly and PC hardware hacking
|--Books on Computer Security
|--Books on Designing Operating Systems
|--Books on Programming Language and Compiler Design
FAQ
Why this document?
There are too many books about computer programming in the market or in your school library. In order to help you reference or buy classic books and avoid bad ones, I start this document. It is distributed only in hope that it will be helpful. THERE IS NO WARRANTY and you can use this freely. This document includes a long list of the famous books on computer programming and this FAQ. Read the FAQ first before mailing me (xiyou.wangcong@gmail.com). Any advice is appreciated! Please feel free to write to me.
What can I do?
Every thing you like! Such as add a new good book and its relate information, correct errors in the following list and so on. I, the editor, do not have enough time to read all the books listed. So some information of some book is incomplete and your good comments of some book are very very appreciated. Read the following TODO to learn more. However, you must make sure that every book you recommend is good enough for readers to buy or reference. At last, if you think some of the following books are not so good, even bad, please write to me. Thanks, folks.
Why there are only books in English?
Because most of the classic and world-famous books about computer programming are written in English. Quote the words of Eric S Raymond in his famous article "How to become a hacker" here: "English has a richer technical vocabulary than any other language and is therefore simply a better tool for the job. For similar reasons, translations of technical books written in English are often unsatisfactory (when they get done at all)."
How can I get the book {Fill in a book name} if I am not in the author's country?
In fact, most of the books have their own photocopy in the market of your country. You can directly buy them instead of the orignal ones. Also, many of these books are already translated into your native language. If you are not so good at English, read the book in your native language.
Why don't you provide where to download these books from Internet?
I already included the legal online copies of some books which I knew. Notice that nearly all the books here are NOT free. In order to protect the copyright of these non-free books, I didn't include illegal copies of these books on the net and won't do that latter.
But if there is really a **legal** copy of some book on the net, I will add the link.
Change Logs
Revision 0.8.0 :
Add many comments.
Revision 0.8.1 :
Add some books on OS.
Add some books on Programming Language and compilers.
Revision 0.8.2 :
Add TODO.
Correct some errors of typesetting.
Revision 0.8.3 :
Motify the FAQ.
Add some books.
Revision 0.8.4 :
Add some books on culture.
Change the order.
Revision 0.8.5 :
Add some books on Perl.
Add the index.
Correct some errors in FAQ.
Revision 0.8.6 :
Add some new books from O'Reilly.
Revision 0.8.7 :
Update the information of some books.
Add some good books.
TODO
Make up the missing information of some books.
Add books on Windows.
Add books on other programming language, like Lisp, Ada, Python etc..
If there is really a legal copy of some book in the following on the net, add its link.
Thanks
Fisher Lee has read this document and given me some helpful advice. Thanks for him!
Books on C Programming
The C Programming Language, Second Edition
Brian W Kernighan and Dennis M Ritchie, 1988, ISBN 0-13-110362-8, Addison-Wesley, 272pp..
The improved second edition, covering ANSI C, of the original classic C book coauthored by C's designer, "K&R". Still the best!
C:How to Program, Second Edition
Deitel.H.M and Deitel.P.J, ISBN 0-13-226119-7, Prentice Hall
Practical C Programming, Third Edition
Steve Oualline, ISBN 1-56592-306-5, O'Reilly
C Programming: A Modern Approach
K.N.King, ISBN 0-393-96945-2, W.W.Norton and Company Softcover
C: A Reference Manual, Fifth Edition
S.P.Harbison and G.L.Steele, ISBN 0-13-089592-X, Prentice Hall
C Programming FAQs
Steve Summit, ISBN 0-201-84519-9, Addison-Wesley
The author is from comp.lang.c. This book collects the frenquently asked questions of comp.lang.c with splendid answers.
Applied C: An Introduction and More
Alice E.Fischer and David W.Eggert, ISBN 7-5053-6931-8, McGraw Hill
One of the best C books for newbies.
The Standard C Library
P.J.Plauger, ISBN 0-13-131509-9, Prentice Hall
ISO 1999 Programming languages-C
ANSI
C Programming Guidelines, Second Edition
Thomas Plum, ISBN 0-911537-07-4, Plum Hall
Efficient C
Thomas Plum and Jim Brodie, ISBN 0-911537-05-8, Plum Hall
Pointers on C
Kenneth A.Reek, ISBN 0-673-99986-6, Addison-Wesley
C Traps and Pitfalls
Andrew Koening, ISBN 0-201-17928-8, Addison-Wesley
Though this book is very thin, it introduces much details on C that every C programmer should know in depth.
C Unleashed
Richard Heathfield,Lawrence Kirby and etc.
The authors often answer questions on comp.lang.c, this book is one of the best C books. It also includes many fields that C applies in.
Expert C Programming
Peter van der Liden, ISBN 0-13-177429-8, Prentice Hall
A very good book on C. Explains much C details in depth. The author's humorous words and interesting stories will also attract you. If you want to make a progress on C programming, read this!
The C Puzzle Book
Feuer Alan R, ISBN 0-13-109926-4, Prentice Hall
Obfuscated C and Other Mysteries
GNU C Library Reference Manual
Books on C++ Programming
The C++ Programming Language, Third Edition
Bjarne Stroustrup, ISBN 0-201-88954-4, Addison Weslsy
A good guide book on C++ by its designer, eponymous with "K&R".
ISO 1998 Programming languages-C++
C++ Primer,Second Edition
Lippman Stanley, ISBN 0-201-16487-6, Addison Wesley
Who's Afraid of C++?
Steve Heller, 1996, ISBN 0-12-339097-4, Academic Press, 508pp..
One of best introductory books on C++.
Thinking in C++, Second Edition
Bruce Eckel, ISBN 0-13-9177094, Prentice Hall
C++ Unleashed
Ruminations on C++
Koenig Andrew and Moo Barbara, ISBN 0-201-42339-1, Addison Wesley
C&C++ Code Capsules--A Guide For Practitioners
Chuck Allison, ISBN 0-13-591785-9, Addison Wesley
Effective C++, Second Edition
Scott Meyers, ISBN 0-201-92488-9, Addison Wesley
More Effective C++
Scott Meyers, ISBN 0-201-63371-X, Addison Wesley
Advanced C++
James Coplien, ISBN 0-201-54855-0, Addison Wesley
Industrial Strength C++
Mats Henricson and Erik Nyquist, ISBN 0-13-120965-5, Prentice Hall
The Design and Evolution of C++
Bjarne Stroustrup, ISBN 0-201-54330-2, Addison Wesley
Books on Java Programming
The Java Programming Language
K.Arnold and J.Gosling, 1996, Addison-Wesley
Thinking in Java
Bruce Eckel
Available online at http://www.mindview.net/Books/TIJ/.
The Art of Java Programming
Books on Perl
Learning Perl, Forth Edition
Randal L. Schwartz, Tom Phoenix, and brian d foy, 2005, ISBN 0-596-10105-8, O'Reilly
Learning Perl, better known as "the Llama book", starts the programmer on the way to mastery. Written by three prominent members of the Perl community who each have several years of experience teaching Perl around the world, this latest edition has been updated to account for all the recent changes to the language up to Perl 5.8.
Programming Perl, Third Edition
Larry Wall, Tom Christiansen and Jon Orwant, 2000, ISBN 0-596-00027-8, O'Reilly & Associates, 1104pp..
Shell (as a programming language for more than trivial scripting) is dead. Perl rules in its place (though it is now being strongly challenged by Python). This is the third edition of the definitive Perl book.
Perl Cookbook, Second Edition
Tom Christiansen and Nathan Torkington, 2003, ISBN 0-596-00313-7, O'Reilly, 1000pp..
Find a Perl programmer, and you'll find a copy of Perl Cookbook nearby. Perl Cookbook is a comprehensive collection of problems, solutions, and practical examples for anyone programming in Perl. The book contains hundreds of rigorously reviewed Perl "recipes" and thousands of examples ranging from brief one-liners to complete applications.
Perl Debugged
Peter Scott and Ed Wright, 2001, ISBN 0-201-70054-9, Addison Wesley, 288pp..
Perl Debugged provides the expertise and solutions developers require for coding better,
faster, and more reliably in Perl. Focusing on debugging, the most vexing aspect of
programming in Perl, this example-rich reference and how-to guide minimizes
development, troubleshooting, and maintenance time resulting in the creation of elegant
and error-free Perl code.
Perl Best Practices
Damian Conway, 2005, ISBN 0-596-00173-8, O'Reilly, 542pp..
With a good dose of Aussie humor, Dr. Conway (familiar to many in the
Perl community) offers 256 guidelines on the art of coding to help you
write better Perl code--in fact, the best Perl code you possibly can.
Perl 6 Essentials
Allison Randal, Dan Sugalski and Leopold Tötsch, 2003, ISBN 0-596-00499-0, O'Reilly, 208pp..
It is the first book that offers a peek into the next major version of the Perl language. Written by members of the Perl 6 core development team, the book covers the development not only of Perl 6 syntax but also Parrot, the language-independent interpreter developed as part of the Perl 6 design strategy. This book is essential reading for anyone interested in the future of Perl. It will satisfy their curiosity and show how changes in the language will make it more powerful and easier to use.
Advanced Perl Programming, Second Edition
Simon Cozens, 2005, ISBN 0-596-00456-7, O'Reilly, 304pp..
This book gives you the essential knowledge of the modern Perl programmer. Whatever your current level of Perl expertise, this book will help you push your skills to the next level and become a more accomplished programmer.
Mastering Regular Expressions
Jeffrey Friedl, 1997, ISBN 1-56592-257-3, O'Reilly
Programming Web Services with Perl
Pavel Kulchenko and Randy J. Ray, 2002, ISBN 0-596-00206-8, O'Reilly, 486pp..
It is written for Perl programmers who have no prior knowledge of web services. No understanding of XML-RPC or SOAP is necessary to be able to apply these technologies easily, through the use of publicly available Perl modules detailed in the book. If you're interested in applying XML-RPC and SOAP technologies to distributed programming applications, then Programming Web Services with Perl is a book you'll want to have.
Cross-Platform Perl
Eric F. Johnson, ISBN 1-55851-483-X
CGI Programming in C & Perl
Thomas Boutell, ISBN 0-201-42219-0
Books on Good Programming Style
The Art of Computer Programming Volume 1
Donald E Knuth, Addison-Wesley
The Art of Computer Programming Volume 2
Donald E Knuth, Addison-Wesley
The Art of Computer Programming Volume 3
Donald E Knuth, Addison-Wesley
The Art of Computer Programming Volume 4
Donald E Knuth, Addison-Wesley
Maybe these are the most authoritative books on algorithm. Recommend for every programmer!
Algorithm in C Volume 1
Algorithm in C Volume 2
Robert Sedgewick
Also good books on algorithm.
Introduction to Algorithms
Thomas H.Cormen, Charles E.Leiserson and Ronald L.Rivest
The Algorithm Design Manual
Steve Skiena
Code Reading--The Open Source Perspective
Doimidis Spinellis, ISBN 0-201-79940-5, Addison Wesley
A good book on an often-neglected skill. If you wanna join in the GNU projects, read this first.
Code Complete, Second Edition
Steve McConnell, ISBN 1-55615-484-4, Microsoft Press
How to Design Programs
Matthias Felleisen, Robert Bruce Findler and Shiram Krishnamurthi
Available online at http://www.htdp.org.
Structure and Interpretation of Computer Programs
Harold Abelson and Gerald Jay Sussman with Julie Sussman, MIT Press
Available online at http://mitpress.mit.edu/sicp/.
The Practice of Programming
Brian Kernighan and Rob Pike, 1999, ISBN 0-201-61586-X, Addison-Wesley.
An excellent treatise on writing high-quality programs, surely destined to become a classic of the field.
Programming Pearls, Second Edition
Jon Bentley, 2000, ISBN 0-201-65788-0, Addison-Wesley.
These are selected essays from Bentley's column in the Communications of the ACM. He discusses a wide variety of issues in program improvement, often focusing on program efficiency.
The Art of Unix Programming
Edited by Eric S. Raymond, 2003, ISBN 0-131-42901-9, Addison-Wesley, 512pp..
The author of the book is one of the best hackers in the world. The book is on how to think like a Unix expert.
Writing Efficient Programs
Jon Bentley, 1982, ISBN 0-13-970251-2 or 0-13-970244-X, Prentice-Hall.
This book presents Bentley's methodology and set of rules for improving program efficiency, and includes a large number of examples.
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt and David Thomas, 1999, ISBN 0-201-61622-X, Addison Wesley, 352pp..
It cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.
The Tao of Programming
James Geoffrey, 1987, ISBN 0-931137-07-1.
This gentle, funny spoof of the Tao Te Ching contains much that is illuminating about the hacker way of thought." When you have learned to snatch the error code from the trap frame, it will be time for you to leave."
Books on Unix/Linux, History and Culture
Free Software,Free Society
Richard M.Stallman, ISBN 1-882114-98-1, GNU Press
Richar Stallman's famous book for GNU development. It tells you why the software should be free and much more.
The Cathedral and the Bazaar, Second Edition
Edited by Eric S. Raymond, 1999, ISBN 0-596-00131-2, O'Reilly & Associates, 240pp..
How and why the Linux development model works. It's ESR's another famous book.
The Mythical Man Month, Anniversary Edition
Frederic P. Brooks, 1995, ISBN 0-201-83595-9, Addison-Wesley.
The one book on software engineering everyone should read.
Alan Cox: "This I'd recommend not for its technical value but for its application of common sense and reality to computing projects." JH: "Ah, yes. What if Linus had been given 200 programmers and had been told to produce Linux in 3 months!"
Open Sources,Voices from the Open Source Revolution
ChrisDiBona et.al. , 1999, ISBN 1-56592-582-3, O'Reilly, 280pp..
Open Sources 2.0
Danese Cooper, Chris DiBona and Mark Stone, 2005, ISBN 0-596-00802-3, O'Reilly, 488pp..
Open Sources 2.0 is a collection of insightful and thought-provoking essays from today's technology leaders that continues painting the evolutionary picture that developed in the 1999 book Open Sources: Voices from the Revolution .
A Quarter Century of Unix
Edited by Peter H. Salus, 1994, ISBN 0-201-54777-5, Addison-Wesley, 255pp..
Linux is part of the Unix tradition. This book is an oral history of Unix -- how it originated, how it evolved, how it spread -- by the people who were there.
The New Hacker's Dictionary, Third Edition
Edited by Eric S. Raymond, 1996, ISBN 0-262-68092-0, MIT Press, 547pp..
Um, er. A guide to Internet culture. Lots of people like it.
Godel Escher Bach: An Eternal Golden Braid
Douglas Hofstadter, 1979, ISBN 0-394-74502-7.
This book reads like an intellectual Grand Tour of hacker preoccupations. Music, mathematical logic, programming, speculations on the nature of intelligence, biology, and Zen are woven into a brilliant tapestry themed on the concept of encoded self-reference. The perfect left-brain companion to Illuminatus.
Linux Cook Book
Carla Schroder, 2004, ISBN 0-596-00640-3, O'Reilly, 580pp..
This book is aimed at folks who want to know what button to push.
Running Linux
Matt Welsh,Matthias Kalle Dalheimer and Lar Kaufman, ISBN 7-5083-0223-0, O'Reilly.
One of the best guide to Linux for newbies. It includes everything you need in order to understand, install, and use the Linux operating system.
Linux in a Nutshell, Fourth Edition
Ellen Siever, Stephen Figgins, Aaron Weber, 2003, ISBN 0-596-00482-6, O'Reilly & Associates.
According to O'Reilly, "The Desktop Reference for Linux". For Linux users this obsoletes their "Unix In a Nutshell" which was SVr4/Solaris-oriented.
A Practical Guide to the UNIX System, Third Edition
M.Sobell, 1994, Addison-Wesley
A Practical Guide to Linux
Mark G. Sobell, 1998, ISBN 0-201-89549-8, Addison-Wesley, 1072pp..
Just what the title says -- practical tutorials in basic Unix, shells, editors, mail programs, networking, Web tools, and utilities. Covers some system administration fundamentals.
Programming with GNU Software
Mike Loukides and Andy Oram, O'Reilly
GCC: The Complete Reference
Arthur Griffith, 2002, ISBN 0-07-222816-4, McGraw-HIll Companies, Inc.
Sed & Awk, Second Edition
Dale Dougherty and Arnold Robbins, 1997, ISBN 1-56592-225-5, O'Reilly, 432 pp..
This book is about a set of oddly named UNIX utilities, sed and awk. These utilities have many things in common, including the use of regular expressions for pattern matching. The focus of this book is on writing scripts for sed and awk that quickly solve an assortment of problems for the user.
Learning GNU Emacs, Third Edition
Debra Cameron, James Elliott and Marc Loy, ISBN 0-596-00648-9, O'Reilly
Detailed introduction to the Emacs editor.
Learning the vi Editor, Sixth Edition
Linda Lamb and Arnold Robbins, 1990, O'Reilly
Detailed introduction to the vi editor.
Learning the Bash Shell, Seconde Edition
Learning the Unix Operating System, Fourth Edition
Jerry Peek, Grace Todino and John Strang, 1998, ISBN 1-56592-390-1, O'Reilly, 106pp..
Beginning Linux Programming, Third Edition
Neil Matthew and Richard Stone, ISBN 0-7645-4497-7, Wiley Publishing Inc.
A very good guide for new Linux programmers. Start your Linux programming here.
Linux Programming Unleashed
Kurt Wall, Mark Watson and Mark Whitis, 1999, ISBN 0-672-31607-2, Sams Publishing
Programming Linux Games
Loki Software Inc.with John R.Hall
If you want to program games for Linux, read this. And you will find it's fun to program games for Linux, too.
Linux Device Drivers, Third Edition
Jonathan Corbet, Greg Kroah-Hartman and Alessandro Rubini, 2005, ISBN 0-596-00590-3, O'Reilly
Over the years, this bestselling guide has helped countless programmers learn how to support computer peripherals under the Linux operating system, and how to develop new hardware under Linux. Now, with this third edition, it's even more helpful, covering all the significant changes to Version 2.6 of the Linux kernel. Includes full-featured examples that programmers can compile and run without special hardware.
Linux and the Unix Philosophy
Mike Gancarz , ISBN 1555582737, Digital Press
Unlike so many books that focus on how to use Linux, this text explores why Linux is a superior implementation of Unix's highly capable operating system.
Advanced Linux Programming
Mark Mitchell, Jeffrey Oldham and Alex Samuel
Professinal Linux Programming
Neil Matthew, Richard Stones and 14 other people
Linux Application Development
Michael K. Johnson and Erik W. Troan, 1998, ISBN 0-201-308215, Addison-Wesley.
The best single reference to the Linux API. Covers the features that aren't generic Unix or Posix.
Unix Programmer's Manual
Unix System Programming: Communication, Concurrency, and Threads
Kay A. Robbins and Steven Robbins, ISBN 7-111-16190-4, Pearson Education
Advanced Programming in the Unix Environment
W. Richard Stevens, 1993, ISBN 0-201-56317-7, Addison-Wesley.
A book on general Unix programming that is every bit as good as Stevens's classic on network programming.
POSIX Programmer's Guide: Writing Portable Unix Programs
Donald Lewine, 1992, ISBN 0-937175-73-0, O'Reilly & Associates, 607pp..
Linux hews very close to the letter of the POSIX standard (non-conformance is considered a bug and swiftly fixed). This excellent reference for POSIX is thus also an excellent reference for the Linux kernel API.
The Design and Implementation of the 4.4BSD Unix Operating System
Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman, 1996, ISBN 0-201-54979-4, Addison-Wesley.
The successor to a classic book on the implementation of the 4.3 BSD kernel, which influenced Linux's design (especially near sockets and networking). This book covers the 4.4BSD base of BSD/OS, FreeBSD, and NetBSD.
Programming Python, Second Edition
Mark Lutz, 2001, ISBN 0-596-00085-5, O'Reilly & Associates.
The next step beyond Perl. Python is beautifully designed, has better integration with C, and scales up more gracefully to large projects.
The Unix Programming Environment
Brian Kernighan and Rob Pike, 1984, ISBN 0-13-937681-X, Prentice-Hall.
A true classic -- possibly the best single-book exposition of the Unix philosophy. Useful for learning shell programming.
Linux Kernel Programming, Third Edition
Michael Beck, Harold Bohme, Mirko Dziadka, Robert Magnus, Claus Schroter, and Dirk Verworner, 2002, ISBN 0-201-719754, Addison-Wesley, 480pp..
A guide to Linux kernel programming; covers 2.4. Covers the architecture of the Linux core and network layer as well as driver construction.
The Linux Kernel book
Remy Card, Eric Dumas, and Frank Mevel, 1998, ISBN 0-471-98141-9, John Wiley & Sons.
A very interesting and informative examination of the operation of the kernel that fills in the gap between the POSIX interface and "The Design of the Unix Operating System" and the Linux source code. A good understanding of the design and operation of a Unix OS is a pre-requisite, but this book is an excellent help to going beyond that general understanding into actual work.
Linux Kernel Development, Second Edition
Robert Love, 2005, ISBN 0-672-32720-1, Sams Publishing, 432pp..
This authoritative, practical guide will help you better understand the Linux kernel through updated coverage of all the major subsystems, new features associated with Linux 2.6 kernel and insider information on not-yet-released developments.
Understanding the Linux Virtual Memory Manager
Mel Gorman, 2004, ISBN 0-13-145348-3, Prentice Hall, 768pp..
This book describes VM in unprecedented detail, presenting both theoretical foundations and a line-by-line source code commentary. It systematically covers everything from physical memory description to out-of-memory management.
Producing Open Source Software
Karl Fogel, 2005, ISBN 0-596-00759-0, O'Reilly, 302pp..
A guide that recommends tried and true steps to help free software developers work together toward a common goal. Not just for developers who are considering starting their own free software project, this book will also help those who want to participate in the process at any level.
Managing Projects with GNU make, Third Edition
Robert Mecklenburg, 2004, ISBN 0-596-00610-1, O'Reilly, 320pp..
It provides guidelines on meeting the needs of large, modern projects. This edition focuses on the GNU version of make, which has deservedly become the industry standard. GNU's powerful extensions are explored in this book, including a number of interesting advanced topics such as portability, parallelism, and use with Java.
IA-64 Linux Kernel: Design and Implementation
D. Mosberger and S. Eranian, 2002, Prentice Hall
Books on Networks and Internet
Unix Network Programming, Volume 1 -- Networking APIs: Sockets and XTI
W. Richard Stevens, 1998, ISBN 0-13-490012-X, Prentice-Hall.
Everything you might want to know about the subject. Generally regarded as definitive on the basics.
Unix Network Programming, Volume 2 -- Interprocess Communication
Richard Stevens, 1998, ISBN 0-13-081081-9, Prentice-Hall.
Ditto...
DNS and BIND, Second Edition
Paul Albiz and Cricket Liu, 1998, ISBN 1-56592-512-2, 502pp., O'Reilly & Associates.
In-depth coverage of DNS, useful for people running complicated multiple-subnet installations. Covers BIND library programming.
TCP/IP Illustrated: The Protocols, Volume 1
W.Stevens, Addison-Wesley, 1994
TCP/IP Illustrated: The Implementation, Volume 2
G. Wright, W. Stevens, Addison-Wesley, 1995
TCP/IP Illustrated: TCP for Transactions,HTTP,NNTP,and the UNIX(R) Domain Protocols,Volume 3
W.Stevens, Addison-Wesley, 1996
Learning PHP 5
David Sklar, 2004, ISBN 0-596-00560-1, 368pp., O'Reilly.
This one is the ideal tutorial for graphic designers, bloggers, and other web crafters who want a thorough but non-intimidating way to understand the code that makes web sites dynamic.
Google Hacks
Tara Calishain and Rael Dornfest, 2003, ISBN 0-596-00447-8, 352pp., O'Reilly.
This book offers a variety of interesting ways for power users to mine the enormous amount of information that Google has access to, and helps you have fun while doing it. You'll learn clever and powerful methods for using the advanced search interface and the new Google API, including how to build and modify scripts that can become custom business applications based on Google.
Books on Assembly and PC hardware hacking
The Art of Assembly Language
Programming from the Ground Up
Jonathan Bartlett, 2003.
It it a free book distributed under the terms of GNU Free Documentation License. You can download a copy from here. This book introduces x86 assembly from a Linux perspective using AT&T grammar. This is very rare.
Linux Assembly Language Programming
Bob Neveln, 2000, ISBN 0-13-087940-1, Prentice Hall, 272pp..
Also introduce x86 assembly in Linux enviroment, but uses NASM (Netwide Assembler) language. Really a good guide to begin your assembly programming from Linux.
80386 Programmer's Reference Manual
Intel Corporation, 1986, ISBN 1-55512-022-9.
Part I. Applications Programming, data types, memory model, instruction set. Part II. Systems Programming, architecture, memory management, protection, multitasking, I/O, exceptions and interrupts, initialization, coprocessing and multiprocessing. Part III. Compatibility (with earlier x86 machines). Part IV. Instruction Set
80386 System Software Writer's Guide
Intel Corporation, 1987, ISBN 1-55512-023-7.
This explains the 386 features for operating system writers. It includes a chapter on Unix implementation. A lot of the 80386 architecture seems to have been designed with Multics in mind; the features are not used by DOS or by Unix.
Programming the 80386
John H. Crawford and Patrick P. Gelsinger, 1987, ISBN 0-89588-381-3, 774pp..
This is the book the Jolitzes used when they ported BSD to the 386 architecture.
80386 Hardware Reference Manual
Intel Corporation, 1986, ISBN 1-55512-024-5.
Pin connections, timing, waveforms, block diagrams, voltages, all that kind of stuff.
The Indispensable PC Hardware Book
Hans-Peter Messmer, 1993, ISBN 0-201-62424-9, 1000pp., Addison-Wesley.
A great book, a not so great book. This book is a very good reference. It has good technical information on the various x86 CPU's from Intel, AMD, Cyrix, IBM, etc. Good reference for older chips (8042 keyboard, etc) but for the really good juicy bits. It's lacking... why? It has a great introduction to the APIC (Advanced PIC) and PCI, but you get no programming information on either. It also has no programming info on PNP hardware. I've also noticed a few mistakes in some of the "source" and other examples.
Defiantly recommended but lacking in a few examples.
The Undocumented PC second edition
Frank van Gilluwe, ISBN: 0-201-47950-8, Addison-Wesley
This book covers a lot of the less well-known system internals (mostly BIOS related, with some CPU and other pieces of hardware).
While it might not be the most useful book for OS Dev it does occasionally help out with something minor but really annoying such as controlling the keyboard lights or how to safely reset the system.
The information is out-dated by now and the source for things may not be especially useful depending on how robust you want it to be, but overall it's a good book if you want an reference for all
the hardware calls you could want to make (as long as said hardware is the same as it was about 5-10 years ago; originally published 1997, update in 2003 for new processors).
Computer Organization and Design: The Hardware/Software Interface
David Patterson and John Hennessy
IA-32 Intel Architecture Software Developer's Manual - Volume 1: Basic Architecture
Intel Corporation, 2005
IA-32 Intel Architecture Software Developer's Manual - Volume 2: Instruction Set Reference
Intel Corporation, 2005
IA-32 Intel Architecture Software Developer's Manual - Volume 3: System Programming Guide
Intel Corporation, 2005
Books on Computer Security
Hacking: The Art of Exploitation
Jon Erickson, ,2003, ISBN 1593270070, 241pp.
Hmm, a very good book for newbies of security. It introduces how to write exploitation on Linux step by step.
The Art of Computer Virus Research And Defense
Peter Szor, 2005, ISBN 0-321-30454-3, Addison Wesley
Symantec's chief antivirus researcher has written the definitive guide to contemporary virus threats, defense techniques, and analysis tools. The author systematically covers everything you need to know, including virus behavior and classification, protection strategies, antivirus and worm-blocking techniques, and much more.
Hack Proofing Linux: A Guide to Open Source Security
James Stanger and Patrick T. Lane, ISBN 1-928994-34-2, Syngress Publishing Inc
Writing Secure Code, Second Edtion
Michael Howard and David Le Blanc, ISBN 0-7356-1722-8, Microsoft Press
Real World Linux Security: Intrusion Prevention, Detection, and Recovery, Second Edition
Bob Toxen, 2003, ISBN 0-13-046456-2, Prentice-Hall.
This is excellent work, the standard by which future Linux security books will be judged. Combines step-by-step practical instructions on hardining a Linux system with good theory on attack paths, rings of protection, and security analysis. Describes many counters for specific exploits.
Books on Designing Operating Systems
Computer Systems -- A Programmer's Perspective
Randal E.Bryant and David R.O'Hallaron, ISBN 013034074X, Prentice Hall
A famous book by CMU professors. Introduces computer systems, both hardware and software, from a programmer's perspective and fits for every programmer especially the CS students in colleges.
Modern Operating Systems, Second Edition
Andrew S. Tanenbaum, 2001, Prentice Hall
Distributed Operating Systems
Andrew S. Tanenbaum, 1995, ISBN 0-13-219908-4, Prentice Hall
Operating Systems: Internals and Design Principles, Fourth Edition
William Stallings, 2000, ISBN: 0138874077, Prentice Hall
"Blending up-to-date theory with modern applications, this book offers a comprehensive treatment of operating systems with an emphasis on internals and design issues.
KEY TOPICS: The use of Windows NT, UNIX SVR4, and Solaris 2.x as running case studies through the book motivates the material and enhances understanding. Expanded treatment of multithreading
and object-oriented design, together with new coverage of microkernels, SMP, and clusters. Provides a solid understanding of the key mechanisms of operating systems and the types of design
trade-offs and decisions. A broad and unified treatment of distributed operating systems thoroughly covers this area of increasing importance, including process and thread migration,
distributed file systems, mutual exclusion and deadlock, and clusters."
The Design of the Unix Operating System
Maurice J. Bach, 1996, ISBN 0-13-201799-7, 470pp., Prentice-Hall.
The book that got Linus started.
Lions Commentary on UNIX sixth edition, with source code
John Lions,ISBN: 1-57398-013-7, Peer to Peer Communications
This is about an old (1975 or so) version of UNIX. The source code won't compile on a modern compiler,
but it's close enough to modern C that anybody who knows C can understand most of what's going on fairly easily.
The second half of the book is devoted to a line-by-line commentary on exactly what each part of the source code is doing and why.
While most of the details in UNIX have changed, the basic concepts have not. This is an excellent introduction to the overall operation of UNIX or any UNIX-like system.
Operating Systems: Design and Implementation
Andrew S. Tanenbaum, 1987, ISBN 0-13-638677-6, 940pp., Prentice-Hall.
Alan Cox likes this book. Tanenbaum designed Minix, which is the system Linus bootstrapped Linux up from.
Operating System Concepts
Abraham Silerschatz and Peter Baer Galvin, ISBN: 0-201-54262-5, Addison-Wesley
AKA the "dinosaurus book". An interesting 'domain overview' book about operating systems (much in the style of Tannenbaum books) designed as a reference for OS theory courses.
It deals with concepts such as scheduling (round-robin, multilevel feedback queues), process synchronization (monitors, transactions, semaphores, etc), MMU and memory management, swapping algorithm (lru, lfu, 2nd chance, etc),
file systems and distributed file systems, system protection and security, etc. Examples and case studies from Linux, Unix and Windows NT illustrate the theorical concepts.
UNIX Internals: The New Frontiers
Uresh Vahalla, ISBN: 0-13-101908-2, Prentice Hall
This covers most of the basic changes in structure and content that have taken place in recent versions of UNIX.
At one time, most versions of UNIX were quite minimal ports of code from AT&T. More recently, individual companies have done considerably more to create their own individual versions of UNIX.
This book does not attempt to analyze lines of code, but gives an overview of the basic concepts used in 4.x BSD, HP-UX, SunOS and Solaris, Digital Unix and Mach-OSF/1 and so on.
Computer Networks, Third Edition
Andrew S. Tanenbaum, 1996, Prentice Hall
Inside Windows NT, Second Edition
David Solomon, Microsoft Press
While this doesn't give as much detail about some areas as I'd like, it's a great improvement over the first edition.
If you're interested in something other than the UNIX family, this is a good place to start -- NT is related to VMS, which tends to follow
a different path from UNIX in a number of areas.
The Design of OS/2
M. Kogan and H. Deitel, 1996, Addison-Wesley
Books on Programming Language and Compiler Design
Linkers and Loaders
John R.Levine, Morgan-Kaufmann, San Francisco, 1999
Hacker's Delight
Henry S. Warren, 2002, Pearson Education
"If you write optimizing compilers or high-performance code, you must read this book."
The Art of Compiler Design: Theory and Practice
Thomas Pittman and James Peters
Advanced Compiler Design and Implementation
Steven Muchnick, 1997, Morgan-Kaufmann
Compilers: Principles, Techniques and Tools
Alfred V.Aho, Ravi Sethi and Jeffrey D.Ullman, Addison Wesley
Compiler Construction Principles and Practice
Kenneth C.Louden, PWS Publishing Company
Programming Language Pragmatics
Michael Scott
Essentials of Programming Languages
Daniel P.Friedman, Mitchell Wand and Christopher T.Haynes
Programming Languages
Samuel N.Kamin