Linux 内核 内存管理物理页释放 ( 物理页释放 __free_pages 函数 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核 内存管理物理页释放 ( 物理页释放 __free_pages 函数 )相关的知识,希望对你有一定的参考价值。
文章目录
一、物理页释放 __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 内核 内存管理物理页释放 ( 物理页释放 __free_pages 函数 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 内存管理伙伴分配器 ② ( 伙伴分配器分配内存流程 )
Linux 内核 内存管理伙伴分配器 ② ( 伙伴分配器分配内存流程 )
Linux 内核 内存管理物理分配页 ② ( __alloc_pages_nodemask 函数参数分析 | __alloc_pages_nodemask 函数分配物理页流程 )
Linux 内核 内存管理物理内存组织结构 ② ( 内存模型 | 平坦内存 | 稀疏内存 | 非连续内存 | 内存管理系统三级结构 | 节点 Node | 区域 Zone | 页 Page )
Linux 内核 内存管理物理分配页 ⑧ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 获取首选内存区域 | 异步回收内存页 | 最低水线也分配 | 直接分配 )