I manage computers running BSD variants every day, at work and at home. After many man page and RTFM iterations to support vital administrative aspects, a desire grew to understand what lay beneath my level of expertise. As eager as I was, I found the prospect of simply plunging into a lengthy code review unappealing.
For this Summer reading season, I went looking for serious professional technical material, the sort that enriches the reader, providing ample opportunity to become significantly smarter about the topic.
My search coincided with the news that, “The Design and Implementation of the FreeBSD Operating System,” the long-awaited update to, “The Design and Implementation of the 4.4BSD Operating System,” was due in August. My interest piqued, I contacted Eugenia at OSNews immediately with an offer to read and review both texts.
I read, “The Design and Implementation of the 4.4BSD Operating System,” first, reasoning the effort essential to properly review the latest edition. After a brief break, I read, “The Design and Implementation of the FreeBSD Operating System,” and then wrote this review.
Both books share identical goals, foci, clarity, and organization. Neither are anything like simple, annotated source code listings (despite the inherent value of such material). Rather, both provide a tremendous depth of background. Unlike a great many computer-related titles currently available, these are designed to serve as texts for Computer Science students as well as authoritative reference material for professional consumption.
The authors rigorously achieve the stated goals of both books (to serve as an authoritative study of the inner workings of 4.4BSD and FreeBSD, respectively). These texts were never intended to serve as published man pages or variations of the excellent web page documentation for administrators as well as end users. Rather, the words, C-like pseudocode fragments, and graphical representations contained in each chapter are composed to answer the, “why,” and, “how,” questions pertaining to the internal structure of the operating system.
The authors never depart from the stated foci (“concepts, data structures and algorithms”) either. Although the reader will learn a LOT about kernel organization, process and memory management, devices, filesystems, the terminal interface, how TCP/IP is implemented, and system startup, there is absolutely no treatment of such topics as shell scripting, X11, graphical desktop environments, electronic mail, apache, samba, etc. These topics clearly fall well beyond the scope of the book. No collection of elementary How-To’s this.
As to clarity, I have to confess that I was concerned that a book of such an intense technical nature could be–while technically precise–quite the difficult reading experience.
I am happy to report that both texts share a common clarity of written word (lucid, readable prose), pseudocode fragment presentation (concise and to the point), and graphical representation (simple yet descriptive). At no time during my reading was effort wasted on trying to discern how the authors were trying to explain the material.
Finally, the organization of both texts is quite sensible. Both start with a solid preface and progress into a history of UNIX. The new edition adds quite a bit about FreeBSD in particular, as would be expected. I have to admit that I enjoyed the two-page timeline in the earlier edition and think it should be present in the current edition as well, but that is because of my fascination with UNIX history.
Other than the chapters on history and system startup (which can be read separately) the best strategy (at least initially) is reading each chapter within each part in sequence. I have not yet attempted the code review mentioned above. However, one of these days I will, and at that point I imagine that reading chapters out of sequence will prove invaluable.
These texts are not lightweight reading, and, quite frankly, having read both I cannot envision an editing strategy that could significantly cut their length without abandoning the depth necessary to be an authoritative reference and university level text.
Reading these two books was time consuming, but as an investment that immediately pays dividends, it was a valuable time expenditure that has yielded an understanding of why FreeBSD works the way it does.
I enjoyed reading these books, the earlier edition for the historical context and the latest edition for its contemporary relevance. Given that I am currently working in a FreeBSD 5.2.1 environment and support Apple OS X (in addition to Linux) the new edition is the right book at the right time.
I appreciated the references to the rationale for design and implementation decisions. I especially liked the remarks about alternative paths that were not followed which appear throughout the design and implementation chapters, along with the reasons why those paths were not followed. The treatments of the decision to extend UFS1 to UFS2 versus implementing either XFS or ReiserFS and the selection of 64 bit over 48 bit time in the new inode format are examples. These were presented in a matter-of-fact way, with no words wasted on gossip or discussions of infighting.
If you are new to the idea of FreeBSD and want to purchase a book to help you gain a general understanding, then this is not the book you are looking for. I recommend instead, “The FreeBSD Corporate Networker’s Guide,” by Ted Mittelstaedt (if you can find a copy) because it covers representative portions of general production topics in an easily digested format.
If you are looking for a FreeBSD text that presents FreeBSD 5 administration and configuration topics, then the book is entirely wrong for you, too. I would suggest either, “The Complete FreeBSD, 4th Edition,” by Greg Lehey, or, “Absolute BSD,” by Michael Lucas.
However, once you progress to the point where you need to learn about the internals of FreeBSD, this will be the book for you.
Finally, assorted observations and comments follow.
* In keeping with academic tradition, both texts contain footnotes. In reading through these, I came to appreciate that if these texts were a series of web pages and the footnotes links to the source documents, reading along the link trail would be a further exploration gratifying in its own right.
* Given the potential use in Computer Science courses, each chapter includes questions of varying degree of difficulty and thought required.
* Both texts include a glossary.
* NetBSD and OpenBSD are not entirely ignored in the latest edition. Descriptive references to both appear at the beginning, to place each BSD family member in proper context. A few references to each appear later in the text where appropriate.
* Darwin (the FreeBSD core for Apple OS X) gets a mention at the very beginning of the book, when the authors first describe the scope of the BSD family of operating systems.
* Although DragonFlyBSD (the newest member of the BSD family of operating systems) is not mentioned by name, Matthew Dillon is acknowledged at the beginning of this book. Despite the fact that the stated goals of the DragonFlyBSD group include advancing BSD from 4.x instead of 5.x, the BSD community shares code with one another. It will be interesting to see how this group contributes to the whole as well as if the next edition of the text (whenever it is published) includes ideas from the project.
* There are no politics, rhetoric, or diatribes in either text. The authors correctly understood that forays into that territory would only detract from achieving their goal. For example, Microsoft, although mentioned in passing in the earlier text in the context of Windows being unable to succeed as a UNIX-killer (as was IBM with OS/2, by the way) is given no mention at all in the latest edition.
* Linux is mentioned, although only in historical context. Given that on the F/OSS side of the operating systems debate there are those in the Linux camp who adhere to a, “BSD is dead,” line, I found it refreshing to get a, “we’re all in this together,” sense from the history chapter. This is a view I personally espouse as the best path to encompass ever larger numbers of newcomers to F/OSS.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
The most concise, grammatically correct, and pleasant article I have ever read posted here on OSNews. This article is a prime example on the type of material that should always be posted here. Bravo!
>The most concise, grammatically correct, and pleasant article I have ever read posted here on OSNews.
There are other gems too on our archives.
>This article is a prime example on the type of material that should always be posted here
Then, you will see one article posted per 6 months. And we can’t afford to post that few.
Somehow I stumbled on the announcement of this book as well, there’s a free chapter on the website. As the review states, it’s very well written:
http://www.awprofessional.com/titles/0201702452
Agreed. This is gold.
Wow not to be the one detractor but i think if i have trouble sleeping i will look up this article! The guy can write thats for sure but it reads like a two page shell script.
the article is excellent.
and the earlier book “The Design and Implementation of the 4.4BSD Operating System” is also excellent and there is a definite need for texts of this type. i am going to order the new one straightaway.
there needs to be a text like this for linux, and netbsd, and so on… explaining the hows and why’s of the kernel design decisions.
the article author explains it well – these classic texts are not installtion guides or administration guides either.
the link above (awprofessional.com) suggests it;ll ship in 24 hours. amazon.co.uk suggests it won’t be available until after sept 30th.
Kudos to Jeffrey Bianchine for an excellent review, and to Eugenia for publishing it. This is the kind of info I want to get, for help in day-to-day work.
All the vitriolic diatribes and religious wars are best left to /. and co. There’s a place for it, and I love a good flame-thread as much as anyone; but sometimes I get really, really tired of all the fighting; and just want to read some good solid technical information. I just finished reading “Fortress Rochester” by Frank Soltis (designer of IBM’s AS/400) and although I don’t particularly like AS/400 machines, it was an excellent read, just for understanding the problems they wrestled with and the design decisions they made. A worthwhile read for anyone interested in Computer Architecture or OS design, even if you never touch an AS/400.
I’ve had the new “FreeBSD” edition on pre-order for a few months, hopefully it will arrive any day now!
I have to agree with several posts:
1) The authort can write
2) It partially reads like a shell script.
3) It is an excellent article.
A few more details would be like sprinkles on the ice-cream, such as:
1) TOC with some brief notes/description on the chapter
and ofcourse with the authors insight. Or maybe a
review of the sections of said book. Just a thought.
2) Not sure what else to add.
Bravo!!! Great read!!
I envy the reviewer, as I ordered my copy a few weeks ago and wait for it being shipped to Germany.
Good to see that it seems to be good.
This is one of the clearest and most useful technical book review I’ve read.
Thanks Jeff!
Fuck I’m high.
Nice article, the author knows how to make his point clear. However I think it’s at times a bit too repetitive. I don’t really want to read about what kind of books these are NOT, I’d like to read a little more about what is actually in the book. Some example quotes would be nice. Otherwise kudos to the article author for taking this much effort and publishing it freely.
Save yourself some hard earned money and purchase “The Design and Implementation of the FreeBSD Operating System” from Bookpool.com. $41.95 ($12 less than awprofessional.com if you’re not a member)
http://www.awprofessional.com/titles/0201702452
And here’s the *cheap* link (sorry for the omission):
http://www.bookpool.com/.x/zrfcg8qo6i/sm/0201702452
…it would’ve been nice to hear *something* subjective as to which chapters are the most mindblowing, whether the FreeBSD volume can stand on its own (considering the textbook pricing), etc.