mmap一个10 GB的文件并将其加载到内存中

sea*_*ean 6 c++ linux mmap

如果我想要mmap一个10 GB的文件并立即将整个文件加载到物理内存中,我该怎么办?
我不想使用函数,mlock因为它需要root权限.
是否有可满足我需求的系统调用?

(我有足够的记忆.)

Ded*_*tor 5

阅读手册页mmap:

MAP_POPULATE(自Linux 2.5.46起)

填充(prefault)页表以进行映射.对于文件映射,这会导致对文件进行预读.以后访问映射不会被页面错误阻止. MAP_POPULATE自Linux 2.6.23起,仅支持私有映射

发出您的请求,并为短暂的等待做好准备(除非您超出进程限制)(取决于磁盘带宽和缓存).