以VirtualBox的虚拟磁盘为例:如果VirtualBox没有避开host os中FileSystem的buffer机制,guest os中的FileSystem会将数据从内存移动到meory。
事实上,我想在用户空间中编写一个文件系统(将所有目录和文件放在一个大文件中)。但是如果我使用c api如fread和fwrite,os中的文件系统会缓冲我的用户空间文件系统读、写的数据。但是我的用户空间文件系统已经实现了自己的缓冲机制。如果我没有避开os中文件系统的缓冲机制,我的用户空间-文件系统会把数据从内存移动到内存。太糟糕了。
有谁知道如何解决这个问题吗?
最佳答案
stdio
不支持。
对于 *NIX:man open
对于 O_DIRECT,man fadvise
和 man madvise
.
对于 Windows,检查 CreateFile
对于 FILE_FLAG_NO_BUFFERING
。挖掘 CreateFileMapping
可能是个好主意也是。
关于c - 如何避免文件系统的缓冲机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423485/