
Linux 内核 内存管理
文章平均质量分 77
韩曙亮
中国人民大学硕士 , 专注于 移动开发 领域 , 博客专家 , 2023 年博客之星 TOP1 , 2021 年博客之星 TOP9 , 华为云 云享专家 , 阿里云社区 专家博主 , 51CTO 专家博主 ;
展开
-
【Linux 内核 内存管理】物理页释放 ( 物理页释放 __free_pages 函数 )
一、物理页释放 __free_pages 函数原创 2022-04-28 11:56:20 · 2136 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )
一、retry 标号代码分析、二、retry 标号完整代码原创 2022-04-27 18:52:00 · 1387 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ⑧ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 获取首选内存区域 | 异步回收内存页 | 最低水线也分配 | 直接分配 )
一、获取首选内存区域、二、异步回收内存页、三、最低水线也分配、四、直接分配内存原创 2022-04-27 16:44:25 · 1077 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )
一、__alloc_pages_slowpath 慢速路径调用函数、二、判断页阶数、三、读取进程 mems_allowed 成员、四、分配标志位转换、五、__alloc_pages_slowpath 慢速路径调用完整函数源码原创 2022-04-27 15:59:09 · 1480 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ⑥ ( get_page_from_freelist 快速路径调用函数源码分析 | 检查内存区域水线 | 判定节点回收 | 判定回收距离 | 回收分配页 )
一、检查内存区域水线、二、判定节点收回是否开启、回收距离是否合法、三、回收没有使用的页、再次检查区域水线、四、分配物理页、五、本博客涉及到的处理过程源码、原创 2022-04-26 18:50:05 · 1683 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ⑤ ( get_page_from_freelist 快速路径调用函数源码分析 | 遍历备用区域列表 | 启用 cpuset 检查判定 | 判定脏页数量 )
一、遍历备用区域列表、二、启用 cpuset 检查判定、三、判定内存节点的脏页数量原创 2022-04-25 18:45:08 · 1152 阅读 · 2 评论 -
【Linux 内核 内存管理】物理分配页 ④ ( __alloc_pages_nodemask 函数源码分析 | 快速路径 | 慢速路径 | get_page_from_freelist 源码 )
一、__alloc_pages_nodemask 函数源码分析 ( 快速路径 | 慢速路径 )、二、get_page_from_freelist 快速路径 调用函数 完整源码原创 2022-04-25 11:40:47 · 1871 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ③ ( 物理页分配标志位分析 | ALLOC_WMARK_MIN | ALLOC_WMARK_MASK | ALLOC_HARDER )
一、物理页分配相关标志位分析、1、水线相关标志位 ( ALLOC_WMARK_MIN | ALLOC_WMARK_LOW | ALLOC_WMARK_HIGH | ALLOC_NO_WATERMARKS )、2、水线位源码 ( ALLOC_WMARK_MASK )、3、物理页分配标志位 ( ALLOC_HARDER | ALLOC_HIGH | ALLOC_CPUSET | ALLOC_CMA )、二、物理页分配相关标志位完整源码原创 2022-04-25 11:18:04 · 3670 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ② ( __alloc_pages_nodemask 函数参数分析 | __alloc_pages_nodemask 函数分配物理页流程 )
一、__alloc_pages_nodemask 函数参数分析、二、 __alloc_pages_nodemask 函数分配物理页流程原创 2022-04-25 11:06:39 · 1866 阅读 · 0 评论 -
【Linux 内核 内存管理】物理分配页 ① ( 分区伙伴分配器物理分配页核心函数 __alloc_pages_nodemask | __alloc_pages_nodemask 函数完整源码 )
一、分区伙伴分配器物理分配页核心函数 __alloc_pages_nodemask、二、__alloc_pages_nodemask 函数完整源码原创 2022-04-25 10:46:14 · 1246 阅读 · 0 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ⑦ ( z->watermark[WMARK_MIN] 最低水位计算 | min_free_kbytes 初始化 )
一、z->watermark[WMARK_MIN] 最低水位计算、二、min_free_kbytes 初始化过程、三、最低水位计算过程、四、nr_free_buffer_pages 函数原型、五、nr_free_zone_pages 函数原型原创 2022-04-24 19:17:26 · 2583 阅读 · 0 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )
一、zone 结构体中水线控制相关成员 ( managed_pages | spanned_pages | present_pages )、二、在 Ubuntu 中查看内存区域水位线原创 2022-04-24 18:35:36 · 1819 阅读 · 1 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ⑤ ( 区域水线 | 区域水线数据结构 zone_watermarks 枚举 | 内存区域 zone 中的区域水线 watermark 成员 )
一、区域水线、二、区域水线数据结构 zone_watermarks 枚举 ( WMARK_MIN | WMARK_LOW | WMARK_HIGH | NR_WMARK )、三、内存区域 zone 中的区域水线 watermark 成员原创 2022-04-24 08:51:09 · 1386 阅读 · 1 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ④ ( 备用内存区域列表排序方式 | 节点优先顺序 | 区域优先顺序 | 排序方式优缺点 | 默认排序方式 )
一、备用内存区域列表排序方式 ( 节点优先顺序 | 区域优先顺序 )、二、备用内存区域列表排序方式优缺点 ( 节点优先顺序 | 区域优先顺序 )、三、备用内存区域列表默认排序方式原创 2022-04-22 19:02:54 · 1384 阅读 · 1 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ③ ( 备用内存区域列表 | ZONELIST_FALLBACK 枚举 | zoneref 结构体 | 备用内存区域借用物理页规则 )
一、备用内存区域列表、二、ZONELIST_FALLBACK、ZONELIST_NOFALLBACK 枚举、三、zoneref 结构体、四、备用内存区域借用物理页规则、原创 2022-04-22 18:44:45 · 1846 阅读 · 0 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )
一、free_area 空闲区域结构体源码分析、二、分配标志位、三、GFP_ZONE_TABLE 标志位区域类型映射表、四、分配标志位对应的内存区域类型、原创 2022-04-22 12:08:35 · 2399 阅读 · 1 评论 -
【Linux 内核 内存管理】分区伙伴分配器 ① ( 分区伙伴分配器源码数据结构 | free_area 空闲区域数组 | MAX_ORDER 宏定义 | 空闲区域的页最大阶数 )
一、分区伙伴分配器、二、分区伙伴分配器源码数据结构、1、free_area 空闲区域数组、2、MAX_ORDER 宏定义 ( 空闲区域的页最大阶数 )原创 2022-04-21 19:00:14 · 2004 阅读 · 0 评论 -
【Linux 内核 内存管理】伙伴分配器 ② ( 伙伴分配器分配内存流程 )
一、伙伴分配器分配内存流程、1、查询 n 阶页块、2、查询 n + 1 阶页块、3、查询 n + 2 阶页块、原创 2022-04-21 11:56:37 · 1321 阅读 · 1 评论 -
【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 )
一、伙伴分配器引入、二、页块、阶、三、伙伴原创 2022-04-20 22:50:03 · 1475 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器编程接口 ⑤ ( memblock_free 函数 | memblock_remove_range 函数 )
一、memblock_free 函数分析、二、memblock_remove_range 函数分析原创 2022-04-20 19:00:30 · 1251 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器编程接口 ④ ( memblock_alloc 函数 | memblock_alloc_base 函数 )
一、memblock_alloc 函数分析、二、memblock_alloc_base 函数分析、三、__memblock_alloc_base 函数分析、四、memblock_alloc_base_nid 函数分析、五、memblock_alloc_range_nid 函数分析原创 2022-04-20 18:42:44 · 1427 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器编程接口 ③ ( memblock_remove 函数 | memblock_remove_range 函数 )
一、memblock_remove 函数分析、二、memblock_remove_range 函数分析、1、memblock_remove_range 函数执行流程、2、memblock_remove_range 函数参数介绍、3、memblock_remove_range 函数源码原创 2022-04-20 17:48:29 · 1312 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器编程接口 ② ( memblock_add_range 函数分析 | memblock_insert_region 函数分析 )
一、memblock_add_range 函数原型分析、二、memblock_add_range 函数源码分析、三、memblock_insert_region 函数原型分析、四、memblock_add_range 函数源码、原创 2022-04-20 11:43:11 · 1190 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器编程接口 ① ( memblock 分配器编程接口简介 | memblock_add 函数原型分析 | memblock_add 函数源码 )
一、memblock 分配器编程接口、二、memblock_add 函数原型分析、三、memblock_add 函数源码原创 2022-04-20 10:59:47 · 1235 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器 ⑤ ( Linux 内核中定义 memblock 分配器的位置 | ARM64体系架构下 Linux内核初始化 memblock 分配器流程 )
一、Linux 内核中定义 memblock 分配器的位置、二、ARM64 体系架构下 Linux 内核初始化 memblock 分配器流程、三、arm64_memblock_init 函数完整源码原创 2022-04-20 05:00:00 · 1302 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器 ④ ( memblock、memblock_type、memblock_region 结构体的关系 )
一、memblock、memblock_type、memblock_region 结构体的关系、1、memblock、memblock_type 关系、2、memblock_type、memblock_region 关系、二、上述数据结构关系图示、原创 2022-04-19 18:30:58 · 1026 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器 ③ ( memblock_region 内存块区域 | memblock_region 结构体成员分析 | memblock 分配器标志位 )
一、memblock_region 内存块区域、二、memblock_region 结构体成员分析、1、base 成员、2、size 成员、3、flags 成员、4、nid 成员、三、memblock 分配器标志枚举、1、MEMBLOCK_NONE、2、MEMBLOCK_HOTPLUG、3、MEMBLOCK_MIRROR、4、MEMBLOCK_NOMAP、原创 2022-04-19 18:15:40 · 1111 阅读 · 0 评论 -
【Linux 内核 内存管理】memblock 分配器 ② ( memblock_type 内存块类型 | memblock_type 结构体成员分析 )
一、memblock_type 内存块类型、二、memblock_type 结构体成员分析、1、cnt 成员、2、max 成员、3、total_size 成员、4、regions 成员、5、name 成员原创 2022-04-19 16:03:31 · 1226 阅读 · 1 评论 -
【Linux 内核 内存管理】memblock 分配器 ① ( memblock 分配器简介 | memblock 结构体成员分析 | 物理内存类型 与 内存类型 )
一、memblock 分配器、二、memblock 结构体分析、1、bottom_up 成员、2、current_limit 成员、3、memory 成员、4、reserved 成员、5、physmem 成员、三、物理内存类型 与 内存类型、原创 2022-04-19 11:55:07 · 1254 阅读 · 0 评论 -
【Linux 内核 内存管理】引导内存分配器 bootmem ③ ( bootmem 引导内存分配器算法 | 低端内存映射 | 内存记录位图 | 最先适配算法 | 内存分配记录 | 内存操作函数 )
一、bootmem 引导内存分配器算法、1、低端内存映射、2、内存记录位图、3、最先适配算法、4、内存分配记录、二、bootmem 引导内存分配器 内存操作 函数 ( alloc_bootmem | free_bootmem )原创 2022-04-19 10:53:27 · 995 阅读 · 0 评论 -
【Linux 内核 内存管理】引导内存分配器 bootmem ② ( bootmem_data 结构体源码分析 | bootmem_data 与内存节点 pglist_data 的关联 )
一、bootmem_data 结构体源码分析、1、node_min_pfn 成员、2、node_low_pfn 成员、3、node_bootmem_map 成员、4、last_end_off 成员、5、node_min_pfn 成员、二、引导内存分配器 bootmem_data 与 内存节点 pglist_data 的关联原创 2022-04-19 08:26:02 · 1024 阅读 · 0 评论 -
【Linux 内核 内存管理】引导内存分配器 bootmem ① ( 引导内存分配器 bootmem 工作机制 | 引导内存分配器 bootmem 的描述 bootmem_data 结构体 )
一、引导内存分配器 bootmem 简介、1、引导内存分配器 bootmem 引入、2、引导内存分配器 bootmem 工作机制、二、引导内存分配器 bootmem 描述 bootmem_data 结构体原创 2022-04-19 07:40:22 · 1140 阅读 · 0 评论 -
【Linux 内核 内存管理】物理内存组织结构 ⑥ ( 物理页 page 简介 | 物理页 page 与 MMU 内存管理单元 | 内存节点 pglist_data 与 物理页 page 联系 )
一、物理页 page 简介、1、物理页 page 引入、2、物理页 page 与 MMU 内存管理单元、3、物理页 page 结构体、4、Linux 内核源码中的 page 结构体、二、内存节点 pglist_data 与 物理页 page 联系、原创 2022-04-18 23:16:26 · 1440 阅读 · 0 评论 -
【Linux 内核 内存管理】物理内存组织结构 ⑤ ( 内存区域 zone 类型简介 | 内存区域类型zone_type 枚举源码分析 | zone_type 枚举源码 )
一、内存区域 zone 类型简介、二、内存区域类型 zone_type 枚举源码分析、1、ZONE_DMA 直接内存访问区域、2、ZONE_DMA32 内存区域、3、ZONE_NORMAL 普通内存区域、4、ZONE_HIGHMEM 高端内存区域、5、ZONE_MOVABLE 可移动区域、6、ZONE_DEVICE 设备区域、三、zone_type 枚举源码、原创 2022-04-18 18:55:08 · 1651 阅读 · 0 评论 -
【Linux 内核 内存管理】物理内存组织结构 ④ ( 内存区域 zone 简介 | zone 结构体源码分析 | zone 结构体源码 )
一、内存区域 zone 简介、二、zone 结构体源码分析、1、watermark 成员、2、lowmem_reserve 成员、3、zone_pgdat 成员、4、pageset 成员、5、zone_start_pfn 成员、6、managed_pages、spanned_pages、present_pages成员、7、name 成员、8、free_area 成员、三、zone 结构体源码、原创 2022-04-18 18:53:10 · 1911 阅读 · 0 评论 -
【Linux 内核 内存管理】物理内存组织结构 ③ ( 内存管理系统三级结构 | 内存节点描述 | 内存节点 pglist_data 结构体 | pglist_data 结构体源码 )
一、内存节点描述、二、内存节点 pglist_data 结构体、三、pglist_data 结构体源码原创 2022-04-18 11:32:44 · 1520 阅读 · 2 评论 -
【Linux 内核 内存管理】物理内存组织结构 ② ( 内存模型 | 平坦内存 | 稀疏内存 | 非连续内存 | 内存管理系统三级结构 | 节点 Node | 区域 Zone | 页 Page )
一、内存模型、二、内存管理系统三级结构原创 2022-04-18 10:40:27 · 990 阅读 · 1 评论 -
【Linux 内核 内存管理】物理内存组织结构 ① ( 多处理器体系结构 | SMP/UMA 对称多处理器结构 | NUMA 非一致内存访问结构 )
一、多处理器体系结构、1、SMP/UMA 对称多处理器结构、2、NUMA 非一致内存访问结构原创 2022-04-18 09:55:16 · 1474 阅读 · 0 评论 -
【Linux 内核 内存管理】munmap 系统调用源码分析 ② ( do_munmap 函数执行流程 | do_munmap 函数源码 )
一、do_munmap 函数执行流程、二、do_munmap 函数源码原创 2022-04-17 23:55:49 · 1290 阅读 · 0 评论 -
【Linux 内核 内存管理】munmap 系统调用源码分析 ① ( munmap 系统调用函数执行流程 | munmap 函数源码 | vm_munmap 函数源码 )
一、munmap 系统调用函数执行流程、二、munmap 系统调用函数源码、三、vm_munmap 函数源码原创 2022-04-17 23:30:33 · 2035 阅读 · 0 评论