【Linux 内核 内存管理】物理页释放 ( 物理页释放 __free_pages 函数 )
2023-09-14 09:07:26 时间
一、物理页释放 __free_pages 函数
页分配器 提供了 释放 物理页的 函数 __free_pages
, 该函数定义在 Linux 内核源码的 linux-4.12\mm\page_alloc.c#4083 位置 ;
__free_pages
函数参数分析 :
struct page *page
参数 表示 要释放的 物理页 page
的 虚拟空间地址 ;
unsigned int order
参数 表示 要释放的 物理页 的 " 阶数 " , 也就是 要释放的物理页大小 ;
阶 ( Order ) : 物理页 的 数量单位 , n n n 阶页块 指的是 2 n 2^n 2n 个 连续的 " 物理页 " ;
参考 【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 页块、阶 | 伙伴 )
__free_pages
函数源码 :
void __free_pages(struct page *page, unsigned int order)
{
if (put_page_testzero(page)) {
if (order == 0)
free_hot_cold_page(page, false);
else
__free_pages_ok(page, order);
}
}
源码路径 : linux-4.12\mm\page_alloc.c#4083
相关文章
- Linux的内存管理
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux下查看内存使用情况方法总结
- Linux下内存管理
- linux yum install和yum localinstall、rpm -ivh的区别
- 【Linux 内核 内存管理】分区伙伴分配器 ④ ( 备用内存区域列表排序方式 | 节点优先顺序 | 区域优先顺序 | 排序方式优缺点 | 默认排序方式 )
- 【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )
- 【Linux 内核 内存管理】memblock 分配器编程接口 ⑤ ( memblock_free 函数 | memblock_remove_range 函数 )
- 【Linux 内核 内存管理】memblock 分配器编程接口 ③ ( memblock_remove 函数 | memblock_remove_range 函数 )
- 【Linux 内核 内存管理】memblock 分配器编程接口 ① ( memblock 分配器编程接口简介 | memblock_add 函数原型分析 | memblock_add 函数源码 )
- 【Linux 内核 内存管理】物理内存组织结构 ③ ( 内存管理系统三级结构 | 内存节点描述 | 内存节点 pglist_data 结构体 | pglist_data 结构体源码 )
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ② ( sys_mmap_pgoff 系统调用函数执行流程 | sys_mmap_pgoff 函数源码 )
- 【Linux 内核 内存管理】内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )
- 【Linux 内核 内存管理】内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射 | munmap 删除内存映射 )
- 【Linux 内核 内存管理】内存映射相关数据结构 ⑥ ( 文件映射 虚拟内存区域 | vm_area_struct | vm_operations_struct | 匿名映射 虚拟内存区域 )
- 【Linux 内核 内存管理】内存映射相关数据结构 ④ ( vm_area_struct 结构体成员分析 | vm_ops 成员 | vm_operations_struct 结构体成员分析 )
- 【Linux 内核 内存管理】内存映射相关数据结构 ② ( vm_area_struct 结构体成员分析 | vm_mm 成员 | vm_page_prot 成员 | vm_flags 成员 )
- 【Linux 内核 内存管理】内存管理架构 ⑤ ( sbrk 内存分配系统调用代码示例 | 在 /proc/pid/maps 中查看进程堆内存详情 )
- 【Linux 内核 内存管理】Linux 内核内存布局 ① ( 查看 Linux 操作系统位数 | 查看 Linux 操作系统软硬件信息 )
- 【Linux 内核】Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )
- 如何查看 Red Hat Enterprise Linux 中的系统内存利用率?
- kali linux 标题栏 显示 网速、CPU 内存使用
- Linux/Android之perf追内存泄漏工具(api级别)(一百)
- Linux为什么虚拟内存大于物理内存?
- Linux:内存
- RK3399平台开发系列讲解(内存篇)15.18、Linux swap的实现
- Linux 物理内存、虚拟内存
- Linux 内存泄漏了,我该如何定位和处理?