Related products:
Solaris(TM) Internals : Solaris 10 and OpenSolaris Kernel Architecture (2nd Edition)
Programming in Objective-C
|
Other Operating Systems
Mac OS X Internals : A Systems Approach
Format: Hardcover
Author: Amit Singh
ReleaseDate: 19 June, 2006
Publisher: Addison-Wesley Professional
Rating:
Most Impressive!
I read through the sections with which I am most familiar (file systems, Spotlight and HFS). This book has to be one of the most comprehensive treatments of any operating system ever. The level of detail and understanding expressed in those sections is very impressive. I thought I might find some errors or at least niggling details that weren't quite right but I could not find any.
Perusing the other sections of the book I even found that I learned a few things. The depth and breadth of this book make it a must-have for anyone involved in MacOS X programming (IMHO). Even if you're not a kernel programmer, there are many details and pieces of information that explain how and why things work the way they do.
Essential for really understanding how Mac OS X works
This book is also a must read for any technical users of OSX, in order for them to know what's really underneath the covers, even when they are not writing software for OSX. This book is essential for anybody that wants to understand the inner workings of Mac OS X, which should include all serious OSX software developers.
I am the second type of reader: I am a researcher with Microsoft Research, where I work mostly on operating-systems related topics. However, at home, I've had machines running OSX since version 10. 0, and I have been waiting for somebody to write this book since then. (In fact, I was eager enough to review portions of an early draft of this book. )
The published book is a bit daunting, at over 1600 pages (bound in a sturdy format, which should tolerate heavy use). However, as quickly becomes clear, it covers a complex topic in such substantial detail that it is hard to see how it could be shorter. Also, given the book's size, and the amount of material it covers, the price seems very reasonable.
Fortunately, despite its size, the book is well structured and has a good index, so information is easy to find. Also, the book is written in an highly readable style, which helps the reader maintain attention. As a result, the book is quite pleasant to browse and read a few dozen pages at a time (as I've been doing for a while, as light bed-side reading).
One of the reasons this book is so useful is that, even more so than other modern operating systems, OSX is a complex mix of new and legacy technologies, both proprietary and open source. So to understand OSX, one has to understand parts of Mac OS 9, Mach, BSD Unix, NextStep, GNU/Linux as well as technology novel to OSX. This book does a good job of covering all of these influences, and give enough historical background to understand why OSX is like it is. Of course, it is possible to successfully use OSX as a "Unix", without knowing about other APIs or subsystems---however, this makes it impossible to use much functionality, and to truly understand the entire system.
This book covers most essential OSX abstractions and concepts, much like the Magic Garden Explained does for System V, the "red daemon" books do for BSD, and the Windows Internals books do for NT. So, the reader will know how scheduling, memory management, synchronization and inter-process communication works, how Mach tasks relate to processes, and other such essentials.
Some of the other operating system books (e. g. , the BSD books) relate what they discuss to particular files and functions of the source code. As far as I can tell, this book does this to an unprecedented extent, describing in detail the Darwin sources for OSX and how they implement the concepts being discussed. In particular, for important system aspects, such as booting and initialization, and scheduling, the data and control flow between source functions is given in complete detail. So, for anybody wanting to explore the Darwin sources, I would think this book would be an invaluable guide.
Another striking property of this book is its detailed "programming examples", for which full source code is usually given. These make the book feel much different than other concepts books, as the author clearly likes to get "down and dirty" and play with the aspects of the system that he describes. The examples range from the incredibly useful (such as user-mode install and control of device drivers) to the highly esoteric (a custom boot GUI in Open Firmware). Some of the examples, such as the one on OSX virtual-machine-monitor interfaces, are likely the only place one may find information and working code for powerful OSX features. These "examples" are typically the basis for interesting system utilities, and in combination with the book's website (osxbook. com), they remind me of how the SysInternals utilities and source code have helped make Windows internals much less mysterious, and enabled much advanced systems work for Windows.
It is worth stressing again that the book is amazingly detailed on a number of topics. For example, it covers the hardware and system initialization of OSX in great detail, in particular for PowerPC and Open Firmware. Also, one could say there is a "mini book" on filesystems, with around 250 pages dedicated to OSX filesystems and the detailed inner workings of HFS+. Much of this information is not available anywhere else in a accessible form for an OSX audience, as far as I know.
Finally, the book has the website http://osxbook. com (formerly kernelthread. com) that is frequently updated with interesting new stuff. There is already lots of bonus material (and sources) on this website. In fact, I keep seeing the website cited in slashdot postings, as the author releases new utilities etc. If you like the articles etc. on that site, you will almost certainly enjoy this book. Also, having the book will make it easier to understand the source for advanced OSX tricks and utilities, both those at osxbook. com and elsewhere.
A notable omission in the book is that it doesn't have much of a discussion of the internals of OSX networking (although it says it is much like that in BSD). I was somewhat surprised when I noticed this, but I guess that the book is as thick as it can be at 1600 pages. Hopefully the book's author will be posting bonus material about OSX networking on the book's webpage, which will make the treatment truly comprehensive. .
The "nearly everything" book about Mac OS X
But if you're intrigued by UNIX, by Mac OS X, by operating systems in general; if you're a developer using Mac OS X, Mach, or Darwin technologies; or just someone with a desire to understand what really happens under the covers of your operating system, you'll enjoy this book. If you want a cookbook approach to dealing with Mac OS X as an end user, this isn't the book for you.
But at about 1600 pages, it's certainly awe inspiring. (Having written a much smaller book myself, I can hardly imagine how he could have accomplished this feat. )
Amit Singh writes well, clearly, and simply, despite the complexity and depth of his material. I've read just a few sections in detail, but skimmed through many. I've found any page to which I might open intriguing and readable.
Want to know about EFI and Open Firmware? Mach? The long and rocky technical history of Apple's quest for a solid modern operating system? X86 and PowerPC technology? What a "framework" really means? How to debug the kernel, or how the UNIX VFS and traditional Apple HFS+ filesystems interrelate? (And even an excellent comparison of HFS+ and NTFS. ) It's all here, clear and concise.
If it wasn't so heavy, it'd be awfully hard to put down. ;-).
|
|