默认情况下,Windows 缓存从磁盘读取并写入磁盘的文件数据。 这意味着读取作从系统内存中的区域(称为系统文件缓存)读取文件数据,而不是从物理磁盘读取文件数据。 相应地,写入作将文件数据写入系统文件缓存而不是磁盘,这种类型的缓存称为写回缓存。 缓存按文件对象进行管理。 缓存在缓存管理器的指示下进行,该管理器在 Windows 运行时会持续运行。
系统文件缓存中的文件数据按作系统确定的时间间隔写入磁盘。 刷新的页面保存在系统缓存工作集中(此时 FILE_FLAG_RANDOM_ACCESS 已设置,文件句柄未关闭),或者保存在备用列表中,成为可用内存的一部分。
延迟将数据写入文件并将其保存在缓存中的策略,直到刷新缓存称为延迟写入,并在确定的时间间隔内由缓存管理器触发。 刷新文件数据块的时间部分取决于其在缓存中存储的时长以及自上次在读取操作中访问数据之后经过的时间。 这可确保经常读取的文件数据在系统文件缓存中保持可访问状态,以最长的时间。
下图演示了此文件数据缓存过程:
如上图中的实心箭头所描述,文件读取期间,当缓存管理器首次请求数据时,一个 256 KB 的数据区域将被读入系统地址空间中的 256 KB 缓存区。 然后,用户模式进程会将此槽中的数据复制到其自己的地址空间。 当进程完成其数据访问后,它将已更改的数据写回到系统缓存中的同一槽,如进程地址空间与系统缓存之间的虚线箭头所示。 当缓存管理器确定在一定时间内不再需要已修改的数据时,它会将已修改的数据写回磁盘上的文件,如系统缓存和磁盘之间的虚线箭头所示。
本部分