understanding the linux virtual memory management 图序

understanding the linux virtual memory management 图序

话说大道至简,今天暂且把图留在这儿,以后慢慢分解。

List of Figures

2.1 Example Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1 Relationship Between Nodes, Zones and Pages . . . . . . . . . . . . . 27

clip_image001

4.1 Linear Address Bit Size Macros . . . . . . . . . . . . . . . . . . . . . 37

4.2 Linear Address Size and Mask Macros . . . . . . . . . . . . . . . . . 38

4.3 Page Table Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.4 Call Graph: paging_init() . . . . . . . . . . . . . . . . . . . . . . . 44

5.1 Kernel Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

clip_image002

5.2 Data Structures related to the Address Space . . . . . . . . . . . . . 57

5.3 Memory Region Flags . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.4 Call Graph: sys_mmap2() . . . . . . . . . . . . . . . . . . . . . . . . 63

5.5 Call Graph: get_unmapped_area() . . . . . . . . . . . . . . . . . . . 64

5.6 Call Graph: insert_vm_struct() . . . . . . . . . . . . . . . . . . . . 65

5.7 Call Graph: sys_mremap() . . . . . . . . . . . . . . . . . . . . . . . . 67

5.8 Call Graph: move_vma() . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.9 Call Graph: move_page_tables() . . . . . . . . . . . . . . . . . . . . 68

5.10 Call Graph: sys_mlock() . . . . . . . . . . . . . . . . . . . . . . . . 69

5.11 Call Graph: do_munmap() . . . . . . . . . . . . . . . . . . . . . . . . 70

5.12 Call Graph: do_page_fault() . . . . . . . . . . . . . . . . . . . . . . 73

5.13 Call Graph: handle_mm_fault() . . . . . . . . . . . . . . . . . . . . 74

5.14 Call Graph: do_no_page() . . . . . . . . . . . . . . . . . . . . . . . . 75

5.15 Call Graph: do_swap_page() . . . . . . . . . . . . . . . . . . . . . . 76

5.16 Call Graph: do_wp_page() . . . . . . . . . . . . . . . . . . . . . . . . 77

5.17 do_page_fault Flow Diagram . . . . . . . . . . . . . . . . . . . . . . 79

6.1 Call Graph: setup_memory() . . . . . . . . . . . . . . . . . . . . . . 82

Linux vm

8.1 vmalloc Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8.2 Call Graph: vmalloc() . . . . . . . . . . . . . . . . . . . . . . . . . . 102

8.3 Call Graph: vfree() . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

9.1 Layout of the Slab Allocator . . . . . . . . . . . . . . . . . . . . . . . 105

9.2 Call Graph: kmem_cache_create() . . . . . . . . . . . . . . . . . . . 113

9.3 Call Graph: kmem_cache_reap() . . . . . . . . . . . . . . . . . . . . 114

9.4 Call Graph: kmem_cache_shrink() . . . . . . . . . . . . . . . . . . . 115

9.5 Call Graph: __kmem_cache_shrink() . . . . . . . . . . . . . . . . . . 115

9.6 Call Graph: kmem_cache_destroy() . . . . . . . . . . . . . . . . . . 116

9.7 Page to Cache and Slab Relationship . . . . . . . . . . . . . . . . . . 117

9.8 Slab With Descriptor On-Slab . . . . . . . . . . . . . . . . . . . . . . 118

9.9 Slab With Descriptor Off-Slab . . . . . . . . . . . . . . . . . . . . . . 119

9.10 Call Graph: kmem_cache_grow() . . . . . . . . . . . . . . . . . . . . 120

9.11 Initialised kmem_bufctl_t Array . . . . . . . . . . . . . . . . . . . . 120

9.12 Call Graph: kmem_slab_destroy() . . . . . . . . . . . . . . . . . . . 122

9.13 Call Graph: kmem_cache_alloc() . . . . . . . . . . . . . . . . . . . . 123

9.14 Call Graph: kmalloc() . . . . . . . . . . . . . . . . . . . . . . . . . . 125

9.15 Call Graph: kfree() . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

10.1 Call Graph: kmap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

10.2 Call Graph: kunmap() . . . . . . . . . . . . . . . . . . . . . . . . . . 133

10.3 Call Graph: create_bounce() . . . . . . . . . . . . . . . . . . . . . . 134

10.4 Call Graph: bounce_end_io_read/write() . . . . . . . . . . . . . . 135

10.5 Acquiring Pages from Emergency Pools . . . . . . . . . . . . . . . . . 137

11.1 Call Graph: kswapd() . . . . . . . . . . . . . . . . . . . . . . . . . . 139

11.2 Call Graph: generic_file_read() . . . . . . . . . . . . . . . . . . . 142

11.3 Call Graph: add_to_page_cache() . . . . . . . . . . . . . . . . . . . 143

11.4 Call Graph: shrink_caches() . . . . . . . . . . . . . . . . . . . . . . 146

11.5 Call Graph: swap_out() . . . . . . . . . . . . . . . . . . . . . . . . . 147

11.6 Page Cache LRU List . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

12.1 Storing Swap Entry Information in swp_entry_t . . . . . . . . . . . 155

12.2 Call Graph: get_swap_page() . . . . . . . . . . . . . . . . . . . . . . 156

12.3 Adding a Page to the Swap Cache . . . . . . . . . . . . . . . . . . . . 158

12.4 Call Graph: add_to_swap_cache() . . . . . . . . . . . . . . . . . . . 159

12.5 Call Graph: sys_writepage() . . . . . . . . . . . . . . . . . . . . . . 162

13.1 Call Graph: out_of_memory() . . . . . . . . . . . . . . . . . . . . . . 164

Ps:这本书是2.4内核的

posted @ 2012-04-02 21:58  os66  阅读(629)  评论(0编辑  收藏  举报