Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ mmap一个10 GB的文件并将其加载到内存中_C++_Linux_Mmap - Fatal编程技术网

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

C++ mmap一个10 GB的文件并将其加载到内存中,c++,linux,mmap,C++,Linux,Mmap,如果我想mmap一个10 GB的文件并立即将整个文件加载到物理内存中,我该怎么做? 我不想使用像mlock这样的函数,因为它需要root权限。 有可以满足我需求的系统调用吗 (我有足够的内存。)阅读: MAP_填充(自Linux 2.5.46起) 为映射填充(预故障)页表。存档 映射时,这会导致对文件进行预读。后期访问 到映射将不会被页面错误阻止。 MAP\u POPULATE仅支持私有映射,因为 Linux 2.6.23 发出您的请求,并做好短暂等待的准备(除非超出进程限制)(取决于磁盘带宽和

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

(我有足够的内存。)

阅读:

MAP_填充(自Linux 2.5.46起) 为映射填充(预故障)页表。存档 映射时,这会导致对文件进行预读。后期访问 到映射将不会被页面错误阻止。
MAP\u POPULATE
仅支持私有映射,因为 Linux 2.6.23


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

+1若要添加此项,您可以选择
madvise(MADV\u WILLNEED)
如果您不想在
mmap
中进行阻止。当然,您放弃了“即时呈现”保证,但整个范围仍然会立即加载到RAM中,只是异步加载。尽管除非您成功地
mlock
,否则您永远不会得到任何保证(页面可能随时被调出或丢弃),因此这是可以接受的。