一尘不染

有什么办法可以保留但不能在Linux中提交内存?

linux

Windows具有VirtualAlloc,它允许您保留地址空间的连续区域,但实际上不使用任何物理内存。稍后,当您要使用它(或它的一部分)时,您再次调用VirtualAlloc来提交以前保留的页面的区域。

这实际上确实很有用,但是我最终希望将我的应用程序移植到linux-因此,如果以后无法移植,我就不想使用它。linux有办法吗?

编辑-用例

我正在考虑分配4 GB或类似的虚拟地址空间,但一次只能分配64K。这将为我提供一种零拷贝的方式来将阵列增长到4
GB。这很重要,因为典型的两倍数组大小和复制会为非常大的数组引入看似随机的,不可接受的延迟。


阅读 241

收藏
2020-06-02

共1个答案

一尘不染

mmap一个特殊文件,例如/dev/zero(或使用MAP_ANONYMOUS)PROT_NONE,然后使用mprotect进行提交。

2020-06-02