zoukankan      html  css  js  c++  java
  • 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内核的

  • 相关阅读:
    2020/1/27 代码审计学习-宽字节注入与二次注入
    2020/1/27代码审计学习之SQL注入漏洞
    2020/1/27代码审计学习之审计涉及的超全局变量
    2019总结与最近
    鸽一天
    [极客大挑战 2019]Knife
    [LuoguP1438]无聊的数列(差分+线段树/树状数组)
    [BJWC2018]最长上升子序列
    笙上月
    笔下梅
  • 原文地址:https://www.cnblogs.com/titer1/p/2430515.html
Copyright © 2011-2022 走看看