Preface xvii
made trawling through all the code worthwhile. Massive thanks go to my reviewers,
who provided clear and detailed feedback long after I thought I had finished writing.
Finally, on the publisher’s front, I would like to thank Bruce Perens for allowing me
to publish in the Bruce Perens’ Open Source Series (http://www.perens.com/Books).
With the technical research, a number of people provided invaluable insight.
Abhishek Nayani was a source of encouragement and enthusiasm early in the re-
search. Ingo Oeser kindly provided invaluable assistance early on with a detailed
explanation of how data is copied from userspace to kernel space, and he included
some valuable historical context. He also kindly offered to help me if I felt I ever got
lost in the twisty maze of kernel code. Scott Kaplan made numerous corrections to
anumber of systems from noncontiguous memory allocation to page replacement
policy. Jonathon Corbet provided the most detailed account of the history of kernel
development with the kernel page he writes for Linux Weekly News. Zack Brown,
the chief behind Kernel Traffic, is the sole reason I did not drown in kernel-related
mail. IBM, as part of the Equinox Project, provided an xSeries 350, which was in-
valuable for running my own test kernels on machines larger than those I previously
had access to. Late in the game, Jeffrey Haran found the few remaining technical
corrections and more of the ever-present grammar errors. Most importantly, I’m
grateful for his enlightenment on some PPC issues. Finally, Patrick Healy was cru-
cial to ensuring that this book was consistent and approachable to people who are
familiar with, but not experts on, Linux or memory management.
Anumber of people helped with smaller technical issues and general inconsisten-
cies where material was not covered in sufficient depth. They are Muli Ben-Yehuda,
Parag Sharma, Matthew Dobson, Roger Luethi, Brian Lowe and Scott Crosby. All
of them sent corrections and queries on different parts of the document, which
ensured that too much prior knowledge was not assumed.
Carl Spalletta sent a number of queries and corrections to every aspect of the
book in its earlier online form. Steve Greenland sent a large number of grammar
corrections. Philipp Marek went above and beyond being helpful by sending more
than 90 separate corrections and queries on various aspects. Long after I thought
Iwas finished, Aris Sotiropoulos sent a large number of small corrections and sug-
gestions. The last person, whose name I cannot remember, but is an editor for a
magazine, sent me more than 140 corrections to an early version. You know who
you are. Thanks.
Eleven people sent a few corrections. Though small, they were still missed
by several of myownchecks. They are Marek Januszewski, Amit Shah, Adrian
Stanciu, Andy Isaacson, Jean Francois Martinez, Glen Kaukola, Wolfgang Oertl,
Michael Babcock, Kirk True, Chuck Luciano and David Wilson.
On the development of VMRegress, nine people helped me keep it together.
Danny Faught and Paul Larson both sent me a number of bug reports and helped
ensure that VMRegress worked with a variety of different kernels. Cliff White, from
the OSDL labs, ensured that VMRegress would have a wider application than my
owntest box. Dave Olien, also associated with the OSDL labs, was responsible for
updating VMRegress to work with 2.5.64 and later kernels. Albert Cahalan sent
all the information I needed to make VMRegress function against later proc utilities.
Finally, Andrew Morton, Rik van Riel and Scott Kaplan all provided insight on the