Windows 系统缓存与文件系统的深入解析
1. 文件的延迟写入禁用
在调用 Windows 的 CreateFile 函数时,如果指定了 FILE_ATTRIBUTE_TEMPORARY 标志来创建临时文件,那么延迟写入器(lazy writer)不会将脏页写入磁盘,除非出现物理内存严重短缺或者文件被显式刷新的情况。这种延迟写入的特性有助于提高系统性能,因为延迟写入器不会立即将可能最终会被丢弃的数据写入磁盘。通常,应用程序在关闭临时文件后不久就会将其删除。
2. 强制缓存写入磁盘
有些应用程序无法容忍文件写入和磁盘更新之间哪怕是瞬间的延迟,因此缓存管理器支持按文件对象进行直写式缓存(write-through caching),即数据一旦被修改就会立即写入磁盘。要开启直写式缓存,可在调用 CreateFile 函数时设置 FILE_FLAG_WRITE_THROUGH 标志。另外,线程在需要将数据写入磁盘时,也可以使用 Windows 的 FlushFileBuffers 函数显式刷新打开的文件。
3. 刷新映射文件
当延迟写入器需要将数据从一个视图写入磁盘,而该视图又被映射到另一个进程的地址空间时,情况会变得稍微复杂一些。因为缓存管理器只知道它自己修改过的页面(其他进程修改的页面只有该进程知道,因为修改页面的页表条目中的修改位保存在进程的私有页表中)。为了解决这个问题,当用户映射文件时,内存管理器会通知缓存管理器。当缓存中的文件被刷新时(例如,调用 Windows
超级会员免费看
订阅专栏 解锁全文
1648

被折叠的 条评论
为什么被折叠?



