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