相关疑难解决方法(0)

我什么时候应该使用mmap进行文件访问?

POSIX环境提供至少两种访问文件的方法.有标准的系统调用open(),read(),write(),和朋友,但也有使用的选项mmap(),将文件映射到虚拟内存.

何时优先使用一个而不是另一个?它们各自的优势是什么,包括两个接口?

c file-io posix mmap

263
推荐指数
6
解决办法
10万
查看次数

带有MAP_NORESERVE的mmap是否会保留物理内存?

该MMAP文件说,下面讲的标志MAP_NORESERVE.

不要为此映射保留交换空间.保留交换空间时,可以保证可以修改映射.如果没有保留交换空间,如果没有可用的物理内存,则可能在写入时获得SIGSEGV.

实际上我想要的只是保留虚拟内存地址而不是分配实际的物理内存.可以使用带有MAP_NORESERVE的mmap完成吗?如果我想使用任何物理内存,我会使用MAP_FORED再次在地址范围内使用MAP_NORESERVE通过mmap分配的地址范围内.

总而言之,我希望内核不为使用带有MAP_NORSERVE标志的mmap分配的内存保留任何物理页面.它是否真的像这样工作,或者如果内核有足够的物理内存,内核是否会分配物理页面?

c linux gcc mmap x86-64

9
推荐指数
2
解决办法
6571
查看次数

将-1作为文件描述符传递给mmap

我对FC17 Linux中的"ls"命令进行了分析.

以下是输出.

execve("/usr/bin/ls", ["ls"], [/* 48 vars */]) = 0
brk(0)                                  = 0x27c1000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc765fa6000
...
Run Code Online (Sandbox Code Playgroud)

我没有得到将-1作为文件描述符传递给mmap调用的目的和结果,有人可以对此有所了解吗?

linux posix

8
推荐指数
2
解决办法
3264
查看次数

标签 统计

c ×2

linux ×2

mmap ×2

posix ×2

file-io ×1

gcc ×1

x86-64 ×1