The Design and Implementation of the FreeBSD Operating System (2nd Edition) ハードカバー – 2014/9/15
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
The most complete, authoritative technical guide to the FreeBSD kernel’s internal structure has now been extensively updated to cover all major improvements between Versions 5 and 11. Approximately one-third of this edition’s content is completely new, and another one-third has been extensively rewritten.
Three long-time FreeBSD project leaders begin with a concise overview of the FreeBSD kernel’s current design and implementation. Next, they cover the FreeBSD kernel from the system-call level down–from the interface to the kernel to the hardware. Explaining key design decisions, they detail the concepts, data structures, and algorithms used in implementing each significant system facility, including process management, security, virtual memory, the I/O system, filesystems, socket IPC, and networking.
This Second Edition
• Explains highly scalable and lightweight virtualization using FreeBSD jails, and virtual-machine acceleration with Xen and Virtio device paravirtualization
• Describes new security features such as Capsicum sandboxing and GELI cryptographic disk protection
• Fully covers NFSv4 and Open Solaris ZFS support
• Introduces FreeBSD’s enhanced volume management and new journaled soft updates
• Explains DTrace’s fine-grained process debugging/profiling
• Reflects major improvements to networking, wireless, and USB support
Readers can use this guide as both a working reference and an in-depth study of a leading contemporary, portable, open source operating system. Technical and sales support professionals will discover both FreeBSD’s capabilities and its limitations. Applications developers will learn how to effectively and efficiently interface with it; system administrators will learn how to maintain, tune, and configure it; and systems programmers will learn how to extend, enhance, and interface with it.
Marshall Kirk McKusick writes, consults, and teaches classes on UNIX- and BSD-related subjects. While at the University of California, Berkeley, he implemented the 4.2BSD fast filesystem. He was research computer scientist at the Berkeley Computer Systems Research Group (CSRG), overseeing development and release of 4.3BSD and 4.4BSD. He is a FreeBSD Foundation board member and a long-time FreeBSD committer. Twice president of the Usenix Association, he is also a member of ACM, IEEE, and AAAS.
George V. Neville-Neil hacks, writes, teaches, and consults on security, networking, and operating systems. A FreeBSD Foundation board member, he served on the FreeBSD Core Team for four years. Since 2004, he has written the “Kode Vicious” column for Queue and Communications of the ACM. He is vice chair of ACM’s Practitioner Board and a member of Usenix Association, ACM, IEEE, and AAAS.
Robert N.M. Watson is a University Lecturer in systems, security, and architecture in the Security Research Group at the University of Cambridge Computer Laboratory. He supervises advanced research in computer architecture, compilers, program analysis, operating systems, networking, and security. A FreeBSD Foundation board member, he served on the Core Team for ten years and has been a committer for fifteen years. He is a member of Usenix Association and ACM.
Marshall Kirk McKusick writes books and articles, consults, and teaches classes on UNIX- and BSD-related subjects. While at the University of California at Berkeley, he implemented the 4.2BSD fast filesystem and was the Research Computer Scientist at the Berkeley Computer Systems Research Group (CSRG), overseeing the development and release of 4.3BSD and 4.4BSD. His particular areas of interest are the virtual-memory system and the filesystem. He earned his undergraduate degree in electrical engineering from Cornell University and did his graduate work at the University of California at Berkeley, where he received master’s degrees in computer science and business administration, and a doctoral degree in computer science. He has twice been president of the board of the Usenix Association, is currently a member of the FreeBSD Foundation Board of Directors, a member of the editorial board of ACM’s Queue magazine, a senior member of the IEEE, and a member of the Usenix Association, ACM, and AAAS. In his spare time, he enjoys swimming, scuba diving, and wine collecting. The wine is stored in a specially constructed wine cellar (accessible from the Web at http://www.McKusick.com/cgi-bin/readhouse) in the basement of the house that he shares with Eric Allman, his partner of 35-and-some-odd years and husband since 2013.
George V. Neville-Neil hacks, writes, teaches, and consults in the areas of Security, Networking, and Operating Systems. Other areas of interest include embedded and real-time systems, network time protocols, and code spelunking. In 2007, he helped start the AsiaBSDCon series of conferences in Tokyo, Japan, and has served on the program committee every year since then. He is a member of the FreeBSD Foundation Board of Directors, and was a member of the FreeBSD Core Team for 4 years. Contributing broadly to open source, he is the lead developer on the Precision Time Protocol project (http://ptpd.sf.net) and the developer of the Packet Construction Set (http://pcs.sf.net). Since 2004, he has written a monthly column, ‘‘Kode Vicious,’’ that appears both in ACM’s Queue and Communications of the ACM. He serves on the editorial board of ACM’s Queue magazine, is vice-chair of ACM’s Practitioner Board, and is a member of the Usenix Association, ACM, IEEE, and AAAS. He earned his bachelor’s degree in computer science at Northeastern University in Boston, Massachusetts. He is an avid bicyclist, hiker, and traveler who has lived in Amsterdam, The Netherlands, and Tokyo, Japan. He is currently based in Brooklyn, New York, where he lives with his husband, Kaz Senju.
Robert N.M. Watson is a University Lecturer in Systems, Security, and Architecture in the Security Research Group at the University of Cambridge Computer Laboratory. He supervises doctoral students and postdoctoral researchers in cross-layer research projects spanning computer architecture, compilers, program analysis, program transformation, operating systems, networking, and security. Dr. Watson is a member of the FreeBSD Foundation Board of Directors, was a member of the FreeBSD Core Team for 10 years, and has been a FreeBSD committer for 15 years. His open-source contributions include work on FreeBSD networking, security, and multiprocessing. Having grown up in Washington, D. C., he earned his undergraduate degree in Logic and Computation, with a double major in Computer Science, at Carnegie Mellon University in Pittsburgh, Pennsylvania, and then worked at a series of industrial research labs investigating computer security. He earned his doctoral degree at the University of Cambridge, where his graduate research was in extensible operating system access control. Dr. Watson and his wife Dr. Leigh Denault have lived in Cambridge, England, for 10 years.
Now, some (hopefully constructive) criticism:
The book visual text layout style looks very unappealing at first, like a wall of text from my "System Software" teacher back in the school days. I've seen the preview and bought the book despite the initial reaction, knowing that the content is actually great. Would be nice to increase the variety of styling tools used (side notes such as when introducing a new word, interesting facts on the side, etc), similar to what you'd see in other school textbooks.
The organization seems a bit hard to follow: a lot of times, a topic is introduced, covered, and I feel deeply unsatisfied. Then another chapter later in the book would cover it deeper or from a different angle. Same goes for definitions: the term "superblock" was used 16 times before it was finally defined in 9.10, though I guess I could refer to a glossary.
A lot of figures are super hard to follow, and would need more explanation about what exactly is going on. For example, Figure 4.3 "Turnstile structures for blocked threads" made no sense to me no matter how hard I looked and how long I re-read the explanations. I loved the overall description on turnstiles though, thank you!
The whole section on network protocols seems vaguely applicable to FreeBSD kernel, though I wouldn't complain since it's free information. I happen to read a networking book in the past covering all the layers and I'm wondering there can be a balance in those chapters: introduce less details but keep enough of them so that the kernel operations still make sense to someone who doesn't have experience in networking. But then again, it's the first book that described Nagle algorithm in a way I could understand and I loved it. I don't know if any change is necessary, but that's the impression I got.
The print quality control seems to be poor: a few pages in my book are badly printed (very pale) and are hard to read for that reason. Not sure if a common occurrence, and I didn't feel like returning the book because hey, most of the pages are fine and I don't want to be wasteful.
in operating system concepts. It is written with an excellent academic style.
Compared to others classic "Internals" books,
it focuses more on the design and algorithmic concepts and
less on the specific detailed structures of the FreeBSD kernel.
The design and implementation of the FreeBSD operating system book fits perfectly
for an advanced operating system course, due to the academic style of presentation and
to the fact that it covers new contemporary topics, as for example the ZFS file system, and
an elaborate presentation of the networking architecture.
FreeBSD is a rather technical and difficult to use operating system,
but with its PC-BSD distribution, things radically change, it is as simple as e.g. Fedora Linux,
OpenSuSE and Ubundu!
Also it has an excellent package installer (i.a. AppCafe) and it is easy to experiment with the open source FreeBSD
kernel, it seems that hacking with the FreeBSD kernel is easier than with the Linux kernel!
However, even FreeBSD is a superb OS and supports a lot of applications, it still falls behind the support offered by Linux.
The overall style of the book is similar to the "Solaris Internals" book,
but the presentation although it is very clear, it is rather more compact and it needs
usually a little more effort to understand.
I feel that the book is a "must have" for every Operating System designer.
Its worth noting that this book is not a generic OS design book. The focus of the book relates to FreeBSD-specific details. This book is also not really an exploration of POSIX or any other attempt to standardize system interfaces. This book is definitely not a programming guide....for that, I recommend "Advanced Programming in the Unix Environment" (aka APUE) which has coverage of BSD apis (as well as linux)...which is an excellent companion for this work.
I would like to see a perpetual electronic version of this book...on the back cover there was only a reference to free 45 day access. That is disappointing in 2014.
If you're thinking about doing FreeBSD development, this is a must-have resource! So glad it's been updated!
If there's a kindle version made available I'll buy that too.