【发布时间】:2021-03-05 01:53:08
【问题描述】:
我想保留一个大的连续区域 (4GiB) 的虚拟地址空间。我可以用mmap 做到这一点。然后,当我写入内存时,内核将逐渐使其成为物理支持。在某个阶段,我想返回这个范围内的物理页面回到内核,同时保持虚拟地址空间的整个区域仍然映射。我的问题是,如果我用munmap 返回物理页面,那么我不仅返回物理页面,还返回虚拟地址空间。
是否可以只返回物理页面而仍保留虚拟地址空间?
【问题讨论】:
我想保留一个大的连续区域 (4GiB) 的虚拟地址空间。我可以用mmap 做到这一点。然后,当我写入内存时,内核将逐渐使其成为物理支持。在某个阶段,我想返回这个范围内的物理页面回到内核,同时保持虚拟地址空间的整个区域仍然映射。我的问题是,如果我用munmap 返回物理页面,那么我不仅返回物理页面,还返回虚拟地址空间。
是否可以只返回物理页面而仍保留虚拟地址空间?
【问题讨论】:
是的,调用madvise(2) 并将advice 设置为MADV_DONTNEED。
【讨论】: