从我可以收集,然后使用POSIXO_DIRECT与open()阻断设备文件的工作方式的方式既结合同FILE_FLAG_WRITE_THROUGH,并FILE_FLAG_NO_BUFFERING与CreateFile()在Windows上-这是正确的我假设?
打开:
O_DIRECT尽量减少进出该文件的 I/O 的缓存影响。通常这会降低性能,但它在特殊情况下很有用,例如当应用程序执行自己的缓存时。文件 I/O 直接进出用户空间缓冲区。
创建文件:
如果FILE_FLAG_WRITE_THROUGH使用,但FILE_FLAG_NO_BUFFERING 是不是也规定,使系统缓存中的效果,然后将数据写入到系统缓存,但被刷新到磁盘刻不容缓。如果FILE_FLAG_WRITE_THROUGH和FILE_FLAG_NO_BUFFERING 都被指定,那么系统缓存没有生效,那么数据会立即刷新到磁盘而不经过 Windows 系统缓存。操作系统还请求将硬盘的本地硬件缓存写入持久性媒体。
是的,在 Windows 系统中使用这两个标志与O_DIRECT在 POSIX 系统上具有非常相似的效果。由于这是两个不同的操作系统,您可以预期没有完全匹配。
但是,除非您试图确切地了解文件系统是如何工作的,否则您会从这两个选项中得到“不要缓冲数据,并尽快将其直接写入磁盘”。
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |