如何在保持映射虚拟地址的同时 return 物理页面?

How to return physical pages while keeping virtual addresses mapped?

我想保留一个大的连续区域 (4GiB) 的虚拟地址 space。我可以用 mmap 做到这一点。然后,当我写入内存时,内核将逐渐使它成为物理支持的。在某个阶段,我想 return 这个范围内的物理页面返回内核,同时保持整个虚拟地址区域 space 仍然映射。我的问题是,如果我 return 具有 munmap 的物理页面,那么我不仅 return 物理页面,而且 return 虚拟地址 space。

是否可以只 return 物理页面,同时仍然保留虚拟地址 space?

年,班级 madvise(2) advice 设置为 MADV_DONTNEED