Book Recommendations

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Schol-R-LEA

Re:Book Recommendations

Post by Schol-R-LEA »

I should have included this earlier:

Linkers and Loaders by John Levine (Morgan-Kauffman; October 1999; ISBN 1-55860-496-0). An early draft of the book is availble in full online, as well.
Tom

Re:Book Recommendations

Post by Tom »

If you want to learn C/C++, this book is really good.

It is "Learn C++ Today!" by Martin Rinehart
grey wolf

Re:Book Recommendations

Post by grey wolf »

for filesystem implementation and design, "Practical File System Design with the Be File System" by Dominic Giampaolo is an indespensible manual on both aspects of filesystem development.
unknown user

Re:Book Recommendations

Post by unknown user »

Well, I know I can't do without Pocket PCRef, 11th edition, by Thomas J. Glover and Millie M. Young, Sequoia Publishing, 2001: ISBN 1-885071-30-2 . Although it's just a pocket reference, it's still invaluable for lots of low-level stuff.
srg

Re:Book Recommendations

Post by srg »

Hi

Does anyone know where the hell I can get hold of a copy of Programmer's Guide to the EGA, VGA, and Super VGA Cards (3rd Edition) by Richard F. Ferraro.

As it's out of print it's very rare and I've tried two book stores (online) both in the UK and US and they have both drawn a blank!

thanks
Schol-R-LEA

Re:Book Recommendations

Post by Schol-R-LEA »

For the assembly fanatics, the Holy Grail must surely be a copy of Michael Abrash's Graphics Programming Back Book, Special Edition, with the all important CD-ROM - important because it holds two of Abrash's earlier books, The Zen of Assembly Programming and Zen and the Art of Code Optimization, as well as the whole of the massive Black Book itself, and a vast library of source code examples.

If you can find a copy of it, especially a copy with the CD, consider yourself fortunate indeed - for it is now so precious a tome that it sells for upwards of $380 on Amazon. Even without considring the price, it is not a casual purchase by any stretch of the imagination, for the book weighs in at over 1500 pages, and is over 3 inches thick - and every page is filled with code optimization lore for assembly and C coders of all kinds, especially graphics programmers (naturally). Despite it's increasing aging information, it remains an important resource for it's overall emphasis on this subject, combined with Abrash's glib and easily-followed writing style.

The good news is, some time back, Dr. Dobb's Journal Online released the Black Book (but not the other two) as PDFs on their site; the bad news is, it's no longer there. It remains on at least one mirror site, but I have no idea of the legality of downloading it from there, since the DDJ release seems to have been subscription-only.

Hopefully, Michael will put us all out of our collective misery by releasing a newer volume, but given how he remains busy in dark Mordor crafting Rings of Power for Sauron in Redmond working on X-Box development for MS, this seems sadly unlikely.

As an aside, one of the things I like about this book is that Abrash, while among the hardest of the hard-core assembly programmers, is not a fanatic about assembly - indeed, he goes out of his way to point out that it is far easier to write inefficient code in assembly than in higher-level languages, if you are careless. If you learn the lessons of this book, then you may never need to write more than a few dozen lines assembly code in your whole system - but they will be the right code. When I finally get around to writing Thelema (LoIS is primarily a warm up exercise, to practice at important skills such as OS coding, assembly language, and code documentation), I mean to write most of the system in Scheme, yet, I expect that it will outperform most of the OSes written entirely in 'blazingy fast' assembly language, simply because I will be able, with profiler and zen timer and the other tools of the trade, to find out where the assembly code should go, and save the rest of my effort at making the system I want.

YMMV, of course; it is concievable, if unlikely, that a truly butch assembly coder could write tightly optimized code that is always correct. It is also true, IMAO, that a programmer who doesn't know any assembly will always be only half what they could be, if only because they don't know what the computer is actually doing when their C or Pascal or whatever code runs. But consider this: even highly respected assembly programmers like Abrash, or net.guru Paul Hsieh, use high-level languages for most of their day-to-day coding projects. The lesson is, put your effort where it will do the most good. Thus endeth the sermon.
Schol-R-LEA

Re:Book Recommendations

Post by Schol-R-LEA »

Here's some general books on programming and design; this isn't particularly related to OS programming, but I think that every programmer would be better off if they have read these, or at least be familiar with them. This list is purely of personal favorites, and if you don't agree, well, that's up to you. HTH.

First, I recommend that everyone go browse the Jargon File for a bit. You can learn as much about programming - and programmers - in that one web-page than anywhere else. It is currently undergoing a major revision, so look in on it from time to time to see what has changed. Interestly, at least three of the books I'm mentioning here are referred to by name in the File.

On to the books:
Programming Pearls by Jon Bentley is an excellent collection of essays on design and implementation in general. While it concentrates on 'programming in the small', it describes techniques that could be applied universally. Major topics include program testing and correctness, algorithmics, and optimization principles. This is a classic which should definitely be read by everyone.

Like Pearls, P.J. Plauger's Programming on Purpose books are collections of previously published essays. Whereas Bentley discussed approaches to writing code, Plauger largely concentrates on the pragmatics of the computer industry, and the goals of programming. Interesting, though not as necessary as Bentley's book. The April Fool's columns are worth the rest of the series, however.

A surprisinngly durable book is The Mythical Man-Month by Fred Brooks. A penetrating look into why software projects fail - by the man who oversaw one of the biggest failures of the early computer industry, the OS/360 project of 1964-67 - it discusses issues that programmers and companies have run into time and again in the past 30 years. When the Anniversary Edition came out, /. posted an interesting and insightful reviewof the revision.

A series that is not so much 'must-read' as 'must have available in case of emergency' is Donald Knuth's Art of Computer Programming. These hefty tomes, of which only three of a projected twelve have been published to date, were originally a part of a massive attempt to encompass the entire programming field as it existed in 1968 - already an overly ambitious task at the time. While the intended project has been something of a failure, the books which are extant - Fundamental Algorithms, Semi-numerical Methods, and Searching and Sorting - are basic and comprehensive references of their subjects. Knuth has finally begun work on book four, Combinatorial Algorithms, and is releasing pre-publication materil from it on his web site. Highly academic in tone, they are nonetheless considered among the most important computer programming books written.

A personal favorite of mine is Structure and Interpretation of Computer Programs, MIT's freshman EECS text. A dense and difficult to read work, it is nonetheless outstanding in the way it presents, in just under 600 pages, a broad overview of programming techniques and paradigms. I know that many programmers who had it as a text curse it for various reasons - it's inpenetrability, it use of Scheme as it's sole language - but I find it to be a powerful work, and think that the use of a LISP variant allows the authors to concentrate on teaching the algorithms rather than the language. A related book, which I also strongly recommend, is How to Design Programs, a more introductory text also using Scheme (the DrScheme dialect, specifically) as its basis. Both books are freely available online in their entirety at the sites mentioned above. It has long been my assertion that every programmer should learn five different languages - Perl, C, Smalltalk, LISP, and an assembly language (in roughly the reverse order ;)) - because each one teaches you things that you couldn't get from the others. Both of these books have important lessons for even experienced programmers, regardless of whether they will ever use Scheme or not - and with the rising popularity of Guile as a general-purpose extension language (the use of the Script-Fu dialect in The GIMP), they are also increasingly practical.
Tom

Re:Book Recommendations

Post by Tom »

The OSKit Project is a good code resource.

http://www.cs.utah.edu/flux/oskit/

Over Ten Megs of code!
Ozguxxx

Re:Book Recommendations

Post by Ozguxxx »

I have encountered with a hardware book called: Indispensable Hardware Book. It is a massive book with really really good contents. I think you can find almost everything that you look for about hardware interfacing and etc. But It is very thick. If you want to take a look search it on amazondotcom.
Whatever5k

Re:Book Recommendations

Post by Whatever5k »

First of all, I agree with Tim Robinson and K.J. on "Operating Systems: Design and Implementation" by Andrew S. Tanenbaum.
But my second recommandation goes to "Just for Fun" by Linus Torvalds and David Diamond. It's not really a OS Development book, but it tells the story of Linux. Very interesting and it thrilled me all day (and night) long. Buy it, a really good choice!
Tom

Re:Book Recommendations

Post by Tom »

WOW ... look at this!
Everything! Even non BIOS HD calls! FRANK! Look here!http://alexfru.narod.ru/emiscdocs.html
K.J.

Re:Book Recommendations

Post by K.J. »

I've set up a new section that has book reviews on Bona Fide OS Development:
http://osdev.neopages.net/books.php

This section is not yet linked to on the site yet, but will be when the next update happens(should be soon). If you have posted a review here, it would be great if you could fill out the short form on the above page for the perticular book(you can copy your allready exsisting review from here if you like, I won't mind it).

K.J.
adeelmahmood1

Re:Book Recommendations

Post by adeelmahmood1 »

well another good book
Linux Kernel Internals by Michael Beck
K.J.

Re:Book Recommendations

Post by K.J. »

Linux Kernel Internals is now online too:
http://docsrv.caldera.com:8457/en/Guides/Linux-Kernel-Internals/

K.J.
Post Reply