linux kernel vfree()如何同步主内核页表和进程页表?

时间:2015-09-01 03:38:49

标签: memory-management linux-kernel vmalloc

我知道vmalloc()是怎么做的。当进程(在内核空间中)想要访问属于vmalloc()的内存时,会发生页面错误并进行同步。

但是当它调用vfree()时,进程如何更新其页表以与主内核页表同步?或者我对它有一些了解。

感谢。

1 个答案:

答案 0 :(得分:0)

您对内存分配的理解似乎是不正确的。没有内存属于vmalloc。在启动时将固定的虚拟地址(内核空间)分配给vmalloc。稍后当调用vmalloc时,将从修复分配范围中选择虚拟地址,并从伙伴系统分配物理内存页。

虚拟地址和物理页面一对一映射。

当调用vfree()时,再次释放虚拟地址范围,物理页面也返回到伙伴系统。

希望这可以纠正你的理解。

我建议你阅读一些关于内核内存的在线教程,现在也要阅读它们。