【问题标题】:Windows Memory Mapped FilesWindows 内存映射文件
【发布时间】:2010-11-01 11:55:25
【问题描述】:
我正在尝试调查 Windows 内核在内存映射文件/虚拟内存方面的行为。具体来说,我感兴趣的是确定内存映射文件的内容(由 Windows)刷新到磁盘的频率以及 Windows 使用什么标准来决定是时候这样做了。
我在网上做了一些研究,除了 MSDN 更多地处理“如何和为什么”而不是详细说明内部运作之外,似乎没有太多信息。如果有人可以向我指出任何文章或以前曾对此进行过研究并有一些见解,我会欢迎它。
谢谢。
【问题讨论】:
标签:
windows
memory
kernel
virtual
【解决方案1】:
我建议阅读 Mark Russinovich 和 David Solomon 的 Microsoft Windows Internals,第五版也与 Alex Ionescu 合着。
【解决方案2】:
内存映射文件由内核中修改后的页面编写器控制 - 每当需要重新使用支持页面的内存时,它们就会被刷新(因此它可能在内存压力下发生)。
系统还会跟踪脏页的数量,并在达到阈值后将其写入。
您可以在this 文章中找到有关 Windows Vista 的 Windows 内存管理更改的更多信息 - 它不会直接回答您关于内存管理器如何处理修改页面的问题,但您可以根据文章中的信息。
【解决方案3】:
内部工作是一个实现细节,可能会发生变化。它们没有在任何地方记录,因为 Microsoft 不希望您依赖细节。
我不得不问:你为什么在乎?如果您有严格的实时要求,Windows 可能不适合您...
【解决方案4】:
我建议你获取一份
Microsoft® Windows® 内部结构
第四版:Microsoft Windows Server 2003 Windows XP 和 Windows 2000
网络云中漂浮着 pdf。
这是“sysinternals”人群编写的书,他们多年来编写了一些非常好的 Windows 实用程序。
http://www.microsoft.com/technet/sysinternals
你必须阅读关于
的章节
内存管理
存储管理
缓存管理器
文件系统
它们不会直接解决您的问题,但如果您能够阅读、消化并掌握非常技术性的段落,您就可以自己解决问题。但是,如果您可以预测 Windows 为何会做“你比大多数人都更好”。
快乐的大脑冻结阅读很多。