Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道vmalloc()是怎么做的。当一个进程(在内核空间)想要访问属于vmalloc()的内存时,会发生页面错误并进行同步。</p>
但是当它调用vfree()时,进程如何更新它的页表以与主内核页表同步?或者我对它有一些理解。
谢谢。
您对内存分配的理解似乎不正确。没有内存属于vmalloc。一个固定的(内核空间的)虚拟地址在启动时被分配给 vmalloc。稍后当调用 vmalloc 时,将从固定分配的范围中选择虚拟地址,并从伙伴系统分配物理内存页面。
虚拟地址和物理页面是一对一映射的。
当调用 vfree() 时,虚拟地址范围被再次释放,物理页面也被返回给伙伴系统。
希望这能纠正您的理解。
我建议您现在也阅读一些有关内核内存的在线教程。