zl程序教程

您现在的位置是:首页 >  系统

当前栏目

【Linux 内核 内存管理】物理页释放 ( 物理页释放 __free_pages 函数 )

Linux内存内核 函数 管理 __ 释放 物理
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

在这里插入图片描述