如果我的代码执行类似于
我之所以问这个问题,是因为我正在开发的应用程序需要授予连续文件存储,并且我读到的唯一实现方法就是像我描述的那样。但是,如果这会导致缓存、磁盘高速缓存或其他有用功能的丢失,我可能会取消对连续存储的需求。
我还困惑于是否需要重新实现低级别的内容,因为该分区已经使用文件系统进行了格式化。我读到这种情况适用于RAW磁盘/分区。我已经知道需要处理哪些块是空闲的或正在使用,文件和文件夹结构等问题,我已经在处理这些问题了。
另一个问题:我只看到关于
最后一个问题:HDD的高速缓存是由其自身驱动程序处理还是由文件系统(例如ext4、ufs等)处理?
fd = open("/dev/sdXY", ...)
以及pwrite(fd, ...)
/pread(fd, ...)
这样的操作,那么I/O操作是否会跳过缓存或磁盘高速缓存?假设/dev/sdXY是一个未挂载、格式化的磁盘分区(ext4、ufs等)。我之所以问这个问题,是因为我正在开发的应用程序需要授予连续文件存储,并且我读到的唯一实现方法就是像我描述的那样。但是,如果这会导致缓存、磁盘高速缓存或其他有用功能的丢失,我可能会取消对连续存储的需求。
我还困惑于是否需要重新实现低级别的内容,因为该分区已经使用文件系统进行了格式化。我读到这种情况适用于RAW磁盘/分区。我已经知道需要处理哪些块是空闲的或正在使用,文件和文件夹结构等问题,我已经在处理这些问题了。
另一个问题:我只看到关于
fopen()
/fread()
/fwrite()
和C++的文件流的缓冲区的内容。是否正确,只有这些流和f*
函数族具有某种类型的缓冲区,而open/write/read/pwrite/pread等则没有?这个缓冲区和磁盘高速缓存是相同的还是不同的?最后一个问题:HDD的高速缓存是由其自身驱动程序处理还是由文件系统(例如ext4、ufs等)处理?