【发布时间】:2017-01-02 21:09:09
【问题描述】:
我的意思是直接在内存中更新数据,而不使用 write()。
在 linux 中,我认为 msync 调用中指定的所有数据都已刷新。
但在 Windows 中,FlushViewOfFile 的文档说“写入脏页”,因此操作系统不知何故知道哪些页面已被更新。
它是如何工作的?我们是否必须使用 WriteFile 来更新映射内存? 如果我们在 linux 中使用 write(),msync 是否只同步脏页?
【问题讨论】:
-
基本上操作系统使用硬件支持。例如,一个页面最初可以被标记为只读。然后在第一次写入时将生成操作系统处理的页面错误。此时页面可以被标记为脏页并变为可写。
标签: linux windows memory-mapped-files