默认情况下,Windows缓存从磁盘读取并写入磁盘的文件数据。这意味着读取操作是从系统文件缓存的区域读取文件数据,而不是从物理磁盘读取。相应地,写操作将文件数据写入系统文件缓存而不是磁盘,这种类型的缓存称为写回缓存。缓存是按文件对象管理的。
缓存在缓存管理器的指导下进行,该管理器在Windows运行时连续运行。系统文件缓存中的文件数据按操作系统确定的间隔写入磁盘,并释放该文件数据以前使用的内存这称为刷新缓存。延迟将数据写入文件并将其保存在缓存中直到缓存刷新的策略称为延迟写入,它由缓存管理器以确定的时间间隔触发。刷新文件数据块的时间部分取决于它存储在缓存中的时间量以及自上次在读取操作中访问数据以来的时间量。这可以确保经常读取的文件数据在系统文件缓存中保持最长时间的可访问性。
此文件数据缓存过程如下图所示。
操作系统的文件缓存机制,在工控领域中,经常会因为突然的掉电,导致系统数据的丢失。
解决这个问题,有两种方式:
1. 应用程序写文件的之后,不经过系统缓存,直接落盘
1.1 通过windows的API
HANDLE CreateFileA(
LPCSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDispos