mmf在windows中如何表现?

时间:2015-09-24 17:22:35

标签: windows memory-mapped-files

我在Windows中创建了一个基于文件的MMF。然后我做了一个2gb视图,检查了通过读取中间某处的4个字节来访问数据的速度。它几乎是瞬间的,所以显然它不会在几毫秒内使整个2gb变红。

这让我很好奇,它是如何运作的?

  1. 是否等待我阅读某些内容然后从文件中读取该特定部分?
  2. 当进程执行其他操作时,它是否会在后台加载到内存中?
  3. 如果它本身没有将自身加载到RAM中,它是否将我已经红色的部分保存为缓存?
  4. 是魔法吗?

1 个答案:

答案 0 :(得分:1)

映射视图时,会在虚拟地址空间和磁盘上的页面之间创建映射。尚未读取任何数据。

只有当您尝试访问某些数据时,映射到该内存地址的页面才会被读入缓存(生成页面故障会强制操作系统读取内存中的映射页面)。

所以,回答你的观点:

  1. 不,但操作系统可能会将一些数据预取到磁盘缓存中(这与“填充映射视图”不完全相同)。
  2. 是的,那些可能会在后台写入磁盘(甚至可能在需要时释放)。
  3. 是! :)