Understanding the Linux Virtual Memory Manager (Paperback)

Mel Gorman

  • 出版商: Prentice Hall
  • 出版日期: 2004-05-09
  • 售價: $2,490
  • 貴賓價: 9.5$2,366
  • 語言: 英文
  • 頁數: 752
  • 裝訂: Paperback
  • ISBN: 0131453483
  • ISBN-13: 9780131453487
  • 相關分類: Linux
  • 已絕版

買這商品的人也買了...

商品描述

Table of Contents:

Preface.


    1. INTRODUCTION.

 

Getting Started. Managing the Source. Browsing the Code. Reading the Code. Submitting Patches.

2. Describing Physical Memory.

 

Nodes. Zones. Zone Initialization. Initializing mem map. Pages. Mapping Pages to Zones. High Memory. Whats New in 2.6.

3. Page Table Management.

 

Describing the Page Directory. Describing a Page Table Entry. Using Page Table Entries. Translating and Setting Page Table Entries. Allocating and Freeing Page Tables. Kernel Page Tables. Mapping Addresses to a struct page. Translation Lookaside Bu.er (TLB). Level 1 CPU Cache Management. Whats New in 2.6.

4. Process Address Space.

 

Linear Address Space. Managing the Address Space. Process Address Space Descriptor. Memory Regions. Exception Handling. Page Faulting. Copying to/from Userspace. Whats New in 2.6.

5. Boot Memory Allocator.

 

Representing the Boot Map. Initializing the Boot Memory Allocator. Initializing bootmem data. Allocating Memory. Freeing Memory. Retiring the Boot Memory Allocator. Whats New in 2.6.

6. Physical Page Allocation.

 

Managing Free Blocks. Allocating Pages. Free Pages. Get Free Page (GFP) Flags. Process Flags. Avoiding Fragmentation. Whats New in 2.6.

7. Noncontiguous Memory Allocation.

 

Describing Virtual Memory Areas. Allocating a Noncontiguous Area. Freeing a Noncontiguous Area. Whats New in 2.6.

8. Slab Allocator.

 

Caches. Slabs. Objects. Sizes Cache. Per-CPU Object Cache. Slab Allocator Initialization. Interfacing With the Buddy Allocator. Whats New in 2.6.

9. High Memory Management.

 

Managing the PKMap Address Space. Mapping High Memory Pages. Unmapping Pages. Mapping High Memory Pages Atomically. Bounce Bu.ers. Emergency Pools. Whats New in 2.6.

10. Page Frame Reclamation.

 

Page Replacement Policy. Page Cache. LRU Lists. Shrinking All Caches. Swapping Out Process Pages. Pageout Daemon (kswapd). Whats New in 2.6.

11. Swap Management.

 

Describing the Swap Area. Mapping Page Table Entries to Swap Entries. Allocating a Swap Slot. Swap Cache. Reading Pages From Backing Storage. Writing Pages to Backing Storage. Reading/Writing Swap Area Blocks. Activating a Swap Area. Deactivating a Swap Area. Whats New in 2.6.

12. Shared Memory Virtual Filesystem.

 

Initializing the Virtual Filesystem. Using shmem Functions. Creating Files in tmpfs. Page Faulting Within a Virtual File. File Operations in tmpfs. Inode Operations in tmpfs. Setting Up Shared Regions. System V IPC. Whats New in 2.6.

13. Out Of Memory Management.

 

Checking Available Memory. Determining OOM Status. Selecting a Process. Killing the Selected Process. Is That It? Whats New in 2.6.

14. The Final Word.

A. Introduction.
B. Describing Physical Memory.

 

Initializing Zones. Page Operations.

C. Page Table Management.

 

Page Table Initialization. Page Table Walking.

D. Process Address Space.

 

Process Memory Descriptors. Creating Memory Regions. Searching Memory Regions. Locking and Unlocking Memory Regions. Page Faulting. Page-Related Disk I/O.

E. Boot Memory Allocator.

 

Initializing the Boot Memory Allocator. Allocating Memory. Freeing Memory. Retiring the Boot Memory Allocator.

F. Physical Page Allocation.

 

Allocating Pages. Allocation Helper Functions. Free Pages. Free Helper Functions.

G. Noncontiguous Memory Allocation.

 

Allocating a Noncontiguous Area. Freeing a Noncontiguous Area.

H. Slab Allocator.

 

Cache Manipulation. Slabs. Objects. Sizes Cache. Per-CPU Object Cache. Slab Allocator Initialization. Interfacing with the Buddy Allocator.

I. High Memory Mangement.

Mapping High Memory Pages. Mapping High Memory Pages Atomically. Unmapping Pages. Unmapping High Memory Pages Atomically. Bounce Bu.ers. Emergency Pools

J. Page Frame Reclamation.

 

Page Cache Operations. LRU List Operations. Re.lling inactive list. Reclaiming Pages From the LRU Lists. Shrinking All Caches. Swapping Out Process Pages. Page Swap Daemon.

K. Swap Management.

 

Scanning for Free Entries. Swap Cache. Swap Area I/O. Activating a Swap Area. Deactivating a Swap Area.

L. Shared Memory Virtual Filesystem.

 

Initializing shmfs. Creating Files in tmpfs. File Operations in tmpfs. Inode Operations in tmpfs. Page Faulting Within a Virtual File. Swap Space Interaction. Setting Up Shared Regions. System V IPC.

M. Out of Memory Management.

 

Determining Available Memory. Detecting and Recovering From OOM.

References.
Code Commentary Index.
Index.
About the Author.

商品描述(中文翻譯)

目錄:

前言。





    1. 簡介。

 

入門。管理原始碼。瀏覽程式碼。閱讀程式碼。提交修補程式。



2. 描述實體記憶體。

 

節點。區域。區域初始化。初始化記憶體映射。頁面。將頁面映射到區域。高記憶體。2.6 版的新功能。



3. 頁表管理。

 

描述頁目錄。描述頁表項目。使用頁表項目。翻譯和設定頁表項目。分配和釋放頁表。核心頁表。將位址映射到 struct page。翻譯後快取 (TLB)。第一層 CPU 快取管理。2.6 版的新功能。



4. 進程位址空間。

 

線性位址空間。管理位址空間。進程位址空間描述符。記憶體區域。例外處理。頁錯誤。與使用者空間進行複製。2.6 版的新功能。



5. 開機記憶體分配器。

 

表示開機地圖。初始化開機記憶體分配器。初始化開機記憶體資料。分配記憶體。釋放記憶體。停用開機記憶體分配器。2.6 版的新功能。



6. 實體頁面分配。

 

管理空閒區塊。分配頁面。空閒頁面。取得空閒頁面 (GFP) 標誌。進程標誌。避免碎片化。2.6 版的新功能。



7. 非連續記憶體分配。

 

描述虛擬記憶體區域。分配非連續區域。釋放非連續區域。2.6 版的新功能。



8. Slab 分配器。

 

快取。Slab。物件。大小快取。每 CPU 物件快取。Slab 分配器初始化。與 Buddy 分配器的介面。2.6 版的新功能。



9. 高記憶體管理。

 

管理 PKMap 位址空間。映射高記憶體頁面。取消映射頁面。原子映射高記憶體頁面。彈回緩衝區。緊急池。2.6 版的新功能。



10. 頁框回收。

 

頁面替換策略。頁快取。LRU 列表。縮小所有快取。將進程頁面交換出去。頁面守護程序 (kswapd)。2.6 版的新功能。



11. 交換區管理。

 

描述交換區。將頁表項目映射到交換區項目。分配交換區槽。交換快取。從後端儲存讀取頁面。將頁面寫入後端儲存。讀取/寫入交換區區塊。啟用交換區。停用交換區。2.6 版的新功能。



12. 共享記憶體虛擬檔案系統。

 

初始化虛擬檔案系統。使用 shmem 函式。在 tmpfs 中建立檔案。虛擬檔案內的頁錯誤。tmpfs 中的檔案操作。tmpfs 中的 inode 操作。設定共享區域。System V IPC。2.6 版的新功能。



13. 記憶體不足管理。

 

檢查可用記憶體。確定 OOM 狀態。選擇一個進程。終止選定的進程。就這樣了嗎?2.6 版的新功能。



14. 最後的話。



A. 簡介。

B. 描述實體記憶體。

 

初始化區域。頁面操作。



C. 頁表管理。