Understanding the Linux Virtual Memory Manager

Understanding the Linux Virtual Memory Manager

Describes Linux Virtual Memory in unprecedented detail, presenting both theoretical foundations and a line-by-line source code commentary. It systematically covers everything from physical memory description to out-of-memory management.

Publication date: 01 Apr 2004

ISBN-10: 0131453483

ISBN-13: 0131453483

Paperback: 768 pages

Views: 24,563

Type: N/A

Publisher: Prentice Hall

License: Open Publication License

Post time: 12 Nov 2007 07:51:52

Understanding the Linux Virtual Memory Manager

Understanding the Linux Virtual Memory Manager Describes Linux Virtual Memory in unprecedented detail, presenting both theoretical foundations and a line-by-line source code commentary. It systematically covers everything from physical memory description to out-of-memory management.
Tag(s): Operating Systems
Publication date: 01 Apr 2004
ISBN-10: 0131453483
ISBN-13: 0131453483
Paperback: 768 pages
Views: 24,563
Document Type: N/A
Publisher: Prentice Hall
License: Open Publication License
Post time: 12 Nov 2007 07:51:52
Summary/Excerpts of (and not a substitute for) the Open Publication License:
The Open Publication works may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that the terms of this license are adhered to, and that this license or an incorporation of it by reference (with any options elected by the author(s) and/or publisher) is displayed in the reproduction. 

Click here to read the full license.
Terms and Conditions:

Mel Gorman wrote:This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/).

Excerpts from the Preface:

Linux is developed with a stronger practical emphasis than a theoretical one. When new algorithms or changes to existing implementations are suggested, it is common to request code to match the argument. Many of the algorithms used in the Virtual Memory (VM) system were designed by theorists, but the implementations have now diverged considerably from the theory. In part, Linux does follow the traditional development cycle of design to implementation, but changes made in reaction to how the system behaved in the "real world" and intuitive decisions by developers are more common.

This means that the VM performs well in practice. However, very little VM documentation is available except for a few incomplete overviews on a small number of Web sites, except the Web site containing an earlier draft of this book, of course! This lack of documentation has led to the situation where the VM is fully understood only by a small number of core developers. New developers looking for information on how VM functions are generally told to read the source. Little or no information is available on the theoretical basis for the implementation. This requires that even a casual observer invest a large amount of time reading the code and studying the field of Memory Management.

This book gives a detailed tour of the Linux VM as implemented in 2.4.22 and gives a solid introduction of what to expect in 2.6. As well as discussing the implementation, the theory that Linux VM is based on will also be introduced. This is not intended to be a memory management theory book, but understanding why the VM is implemented in a particular fashion is often much simpler if the underlying basis is known in advance.

To complement the description, the appendices include a detailed code com- mentary on a significant percentage of the VM. This should drastically reduce the amount of time a developer or researcher needs to invest in understanding what is happening inside the Linux VM because VM implementations tend to follow similar code patterns even between major versions. This means that, with a solid under- standing of the 2.4 VM, the later 2.5 development VMs and the 2.6 final release will be decipherable in a number of weeks.

The Intended Audience

Anyone interested in how the VM, a core kernel subsystem, works will find answers to many of their questions in this book. The VM, more than any other subsystem, affects the overall performance of the operating system. The VM is also one of the most poorly understood and badly documented subsystems in Linux, partially because there is, quite literally, so much of it. It is very difficult to isolate and understand individual parts of the code without first having a strong conceptual model of the whole VM, so this book intends to give a detailed description of what to expect before going to the source.

This material should be of prime interest to new developers who want to adapt the VM to their needs and to readers who simply would like to know how the VM works. It also will benefit other subsystem developers who want to get the most from the VM when they interact with it and operating systems researchers looking for details on how memory management is implemented in a modern operating system. For others, who just want to learn more about a subsystem that is the focus of so much discussion, they will find an easy-to-read description of the VM functionality that covers all the details without the need to plow through source code.

However, it is assumed that the reader has read at least one general operating system book or one general Linux kernel-orientated book and has a general knowledge of C before tackling this book. Although every effort is made to make the material approachable, some prior knowledge of general operating systems is assumed.

Reviews:

Amazon.com

:) "The text itself is nicely organized, hierarchy is well defined, concepts explained. Detailed description of logic is supported by the code examples that are dissected in detail, and in my mind provide an excellent learning resource. "




About The Author(s)


Mel Gorman is a kernel engineer based in Limerick, Ireland and currently working for SUSE Labs. He holds a PhD in computer science from the University of Limerick and is the author of Understanding the Linux Virtual Memory Manager. Previously he worked for the IBM Linux Technology Center as a memory manager specialist and earlier worked with their Lotus division on IBM PortalServer. 

Mel Gorman

Mel Gorman is a kernel engineer based in Limerick, Ireland and currently working for SUSE Labs. He holds a PhD in computer science from the University of Limerick and is the author of Understanding the Linux Virtual Memory Manager. Previously he worked for the IBM Linux Technology Center as a memory manager specialist and earlier worked with their Lotus division on IBM PortalServer. 


Book Categories
Sponsors