And*_*zos 17 c linux mmap linux-kernel
如果我创建mmap(2)
一个文件用prot
的参数,PROT_READ
只和文件支持它也是只读的,没有变化,有没有之间的性能差异(或根本任何区别)MAP_SHARED
和MAP_PRIVATE
?内核会在两者之间做些不同的事吗?
(文档仅指"更新"方面的行为差异,但因为它PROT_READ
不存在更新.我想知道是否还有其他差异?)
在MAP_PRIVATE
Linux 联机帮助页中,未指定 mmap() 调用后对文件所做的更改是否在映射区域中可见。情况并非如此MAP_SHARED
。因此,如果您需要将映射的内容与文件的内容一起更新,您最好使用MAP_SHARED
. 如果底层文件本身是只读的并且无法更改,那么当然这些都不适用。
如果使用 ,我看不出和PROT_READ
之间应该有什么不同。事实上,尽管上面有关于未指定行为的警告,但我的猜测(我没有测试过)是,在实践中,两者之间根本没有区别。MAP_PRIVATE
MAP_SHARED
PROT_READ