POSIX O_DIRECT 与 Windows FILE_FLAG_WRITE_THROUGH & FILE_FLAG_NO_BUFFERING

5 winapi posix file device

从我可以收集,然后使用POSIXO_DIRECTopen()阻断设备文件的工作方式的方式既结合同FILE_FLAG_WRITE_THROUGH,并FILE_FLAG_NO_BUFFERINGCreateFile()在Windows上-这是正确的我假设?

打开:

O_DIRECT尽量减少进出该文件的 I/O 的缓存影响。通常这会降低性能,但它在特殊情况下很有用,例如当应用程序执行自己的缓存时。文件 I/O 直接进出用户空间缓冲区。

创建文件:

如果FILE_FLAG_WRITE_THROUGH使用,但FILE_FLAG_NO_BUFFERING 是不是也规定,使系统缓存中的效果,然后将数据写入到系统缓存,但被刷新到磁盘刻不容缓。如果FILE_FLAG_WRITE_THROUGHFILE_FLAG_NO_BUFFERING 都被指定,那么系统缓存没有生效,那么数据会立即刷新到磁盘而不经过 Windows 系统缓存。操作系统还请求将硬盘的本地硬件缓存写入持久性媒体。

Mat*_*son 6

是的,在 Windows 系统中使用这两个标志与O_DIRECT在 POSIX 系统上具有非常相似的效果。由于这是两个不同的操作系统,您可以预期没有完全匹配。

但是,除非您试图确切地了解文件系统是如何工作的,否则您会从这两个选项中得到“不要缓冲数据,并尽快将其直接写入磁盘”。