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