写在升压只有内存映射?(Write Only Memory Mapping in boost?)

2019-10-20 08:07发布

为什么不提升间的支持只写内存映射?

也许我失去了一些东西,但不会只写映射比读/写映射显著更快的操作系统并没有从磁盘读取页面,刚冲出从内存到磁盘的页面? 也将有被完全无阻塞(除了冲洗和破坏)下的权益。

我会从提振切换到本地操作系统内存映射中受益?

Answer 1:

如果您分配大小的新内存映射文件的事实,说,20Gb的,你会得到大小的稀疏文件分配。

当该文件的网页“在映射”,我们需要有一个读操作(如操作系统也许能告诉页面实际不存在,但在磁盘上),只有当(如果)这些页面被弄脏需要他们写出来。

当然,这取决于具体的实现,我不认为POSIX(可)保证这一点,但它不是不合理行为IYAM,并且将只写映射的等价物。



Answer 2:

其实,只写MEMMAP不会是速度更快,因为操作系统只能存变化的跟踪/提供整页粒度的映射。

至少,如果你想避免模拟所有访问在内核土地这些网页的成本过高(未实现),而不是仅仅映射的页面。

不知怎的,我怀疑直接到OS API而不是去通过升压-API可以提供任何显著速度起坐:

升压API是一个薄的包装在特定于操作系统的接口和将被完全内联,从而通过任何像样的编译器编译出来。



文章来源: Write Only Memory Mapping in boost?