为什么不提升进程间支持只写内存映射?只写内存映射在boost?
也许我错过了一些东西,但不会写只有映射显着快于读/写映射,因为操作系统不需要从磁盘读取页面,只需从内存中清除页面磁盘?它也有完全非阻塞的好处(除了冲洗和破坏)。
我会从升压切换到本机操作系统内存映射受益吗?
为什么不提升进程间支持只写内存映射?只写内存映射在boost?
也许我错过了一些东西,但不会写只有映射显着快于读/写映射,因为操作系统不需要从磁盘读取页面,只需从内存中清除页面磁盘?它也有完全非阻塞的好处(除了冲洗和破坏)。
我会从升压切换到本机操作系统内存映射受益吗?
事实上,如果你分配一个新的大小内存映射文件,比如说20Gb,你会得到一个稀疏的文件大小分配。
当在该文件的“映射”页面中,需要进行读取操作(因为操作系统可能能够判断该页面在物理上还没有存在于磁盘上),并且只有当(如果)这些页面被弄脏需要他们写出来。
当然,这是依赖于实现的,我不认为POSIX(可以)保证这一点,但它不是不合理的行为IYAM,并且相当于只写映射。
实际上,只写memmap不会更快,因为操作系统只能跟踪更改/在整页粒度中提供这些映射。
至少,如果你想避免模拟所有访问这些页面在kernel-land(未实现)而不是仅仅映射页面的高昂成本。
不知怎的,我怀疑直接到OS API,而不是去通过升压-API可以提供任何显著速度起坐:
升压API是一个瘦包装在特定的操作系统界面和会完全内联,并由任何体面的编译器编译出来。
我考虑OS API的原因是因为它允许只写映射。虽然,我不确定这是否有任何实际区别。 – ronag
不确定整个页面增量必须与只写和读/写之间的区别? – ronag
你的问题是询问是否只写一个文件的映射文件会更快,这对于答案很重要。嗯.. *粒度*会更好。 – Deduplicator