Библиотека сайта rus-linux.net
The book is available and called simply "Understanding The Linux Virtual Memory Manager". There is a lot of additional material in the book that is not available here, including details on later 2.4 kernels, introductions to 2.6, a whole new chapter on the shared memory filesystem, coverage of TLB management, a lot more code commentary, countless other additions and clarifications and a CD with lots of cool stuff on it. This material (although now dated and lacking in comparison to the book) will remain available although I obviously encourge you to buy the book from your favourite book store :-) . As the book is under the Bruce Perens Open Book Series, it will be available 90 days after appearing on the book shelves which means it is not available right now. When it is available, it will be downloadable from http://www.phptr.com/perens so check there for more information.
To be fully clear, this webpage is not the actual book.
Next: List of Figures Up: understand-html Previous: understand-html   Index
Contents
- List of Figures
- List of Tables
- Acknowledgments
- 1. Introduction
- 1.1 General Kernel Literature
- 1.2 Thesis Overview
- 1.3 Typographic Conventions
- 1.4 About this Document
- 1.5 Companion CD
- 2. Code Management
- 3. Describing Physical Memory
- 4. Page Table Management
- 4.1 Describing the Page Directory
- 4.2 Describing a Page Table Entry
- 4.3 Using Page Table Entries
- 4.4 Translating and Setting Page Table Entries
- 4.5 Allocating and Freeing Page Tables
- 4.6 Kernel Page Tables
- 4.7 Mapping addresses to
struct page
s
- 5. Process Address Space
- 5.1 Linear Address Space
- 5.2 Managing the Address Space
- 5.3 Process Address Space Descriptor
- 5.4 Memory Regions
- 5.4.1 File/Device backed memory regions
- 5.4.2 Creating A Memory Region
- 5.4.3 Finding a Mapped Memory Region
- 5.4.4 Finding a Free Memory Region
- 5.4.5 Inserting a memory region
- 5.4.6 Merging contiguous regions
- 5.4.7 Remapping and moving a memory region
- 5.4.8 Locking a Memory Region
- 5.4.9 Unlocking the region
- 5.4.10 Fixing up regions after locking
- 5.4.11 Deleting a memory region
- 5.4.12 Deleting all memory regions
- 5.5 Exception Handling
- 5.6 Page Faulting
- 5.7 Copying To/From Userspace
- 6. Boot Memory Allocator
- 6.1 Representing the Boot Map
- 6.2 Initialising the Boot Memory Allocator
- 6.3 Allocating Memory
- 6.4 Freeing Memory
- 6.5 Retiring the Boot Memory Allocator
- 7. Physical Page Allocation
- 7.1 Managing Free Blocks
- 7.2 Allocating Pages
- 7.3 Free Pages
- 7.4 Get Free Page (GFP) Flags
- 7.5 Avoiding Fragmentation
- 8. Non-Contiguous Memory Allocation
- 8.1 Describing Virtual Memory Areas
- 8.2 Allocating A Non-Contiguous Area
- 8.3 Freeing A Non-Contiguous Area
- 9. Slab Allocator
- 9.1 Caches
- 9.2 Slabs
- 9.3 Objects
- 9.4 Sizes Cache
- 9.5 Per-CPU Object Cache
- 9.6 Slab Allocator Initialisation
- 9.7 Interfacing with the Buddy Allocator
- 10. High Memory Management
- 10.1 Managing the PKMap Address Space
- 10.2 Mapping High Memory Pages
- 10.3 Mapping High Memory Pages Atomically
- 10.4 Bounce Buffers
- 10.5 Emergency Pools
- 11. Page Frame Reclamation
- 11.1 Pageout Daemon (kswapd)
- 11.2 Page Cache
- 11.3 Manipulating the Page Cache
- 11.4 Shrinking all caches
- 11.5 Swapping Out Process Pages
- 11.6 Page Replacement Policy
- 12. Swap Management
- 12.1 Describing the Swap Area
- 12.2 Mapping Page Table Entries to Swap Entries
- 12.3 Allocating a swap slot
- 12.4 Swap Cache
- 12.5 Activating a Swap Area
- 12.6 Deactivating a Swap Area
- 12.7 Swapping In Pages
- 12.8 Swapping Out Pages
- 12.9 Reading/Writing the Swap Area
- 13. Out Of Memory Management
- 14. Conclusion
- Bibliography
- Index
- About this document ...
Mel 2004-02-15