1

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

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

谢谢。

4

1 回答 1

0

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

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

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

希望这能纠正您的理解。

我建议您现在也阅读一些有关内核内存的在线教程。

于 2015-09-01T09:55:02.590 回答