在内存映射的稀疏文件的孔中写入

时间:2014-06-09 21:47:59

标签: linux file-io filesystems memory-mapped-files memory-mapping

我需要一个文件,其中某些字节是连续布局的。让我们称这些块。块需要连续布局的原因是这些块最终被内存映射到数组。一个文件将有几个块(这些块对应于不同但相关的数组),并且这些块需要随着时间的推移而附加。我想到的第一件事是使用稀疏文件并在块间边界处有孔。

每当我有新数据时,我都可以在洞中写字。如果孔中的可用空间不够,我打算移动最小量的字节来创建空间和(将来有一些额外的空间),然后写入数据。

  1. 这是一种错误的做事方式吗?
  2. 这种方法是否有很好的替代方案
  3. 操作系统(Linux)如何处理漏洞中的写入操作 移动(移位)尾部的所有字节?或者重新构造inode以某种方式容纳(以碎片为代价)
  4. 是否有最佳方法可以实现摊销运动成本 小

1 个答案:

答案 0 :(得分:1)

  1. 很有可能,是的。

  2. Linux已经附带了一个系统,用于跟踪具有高效附加的多个连续字节序列:文件系统。你不能只使用多个文件吗?

  3. 如果您使用现代Linux fs(即不是FAT32),它将保留现有数据并分配额外空间。这可以是预先分配的范围/块或碎片。它留给FS来解决这个问题。

  4. “最佳”取决于您的使用模式以及您对时间与空间的重视程度。很难做出一般性评论,但是有很多关于如何在给定各种假设的情况下分配和重新分配字节块的CS论文。