写在记忆的洞里

我需要有一个文件,其中某些字节是连续布局的。 让我们打电话给这些块。 块需要连续布局的原因是这些块最终得到内存映射到一个数组。 一个文件会有几个块(这些块对应于不同的但是相关的数组),并且这些块需要随着时间而被追加。 我首先想到的是使用稀疏文件,并在块间边界处有空洞。

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

  • 这是一种错误的做事方式吗?
  • 这种方法是否有很好的选择?
  • 操作系统(Linux)如何处理写入漏洞,是否移动(移位)尾部中的所有字节? 或者重新构造inodes以适应(以碎片为代价)
  • 有没有一种最佳的方法来实现这一点,以便摊销的移动成本很小

  • 很可能,是的。

  • Linux已经配备了一个系统,用于追踪多个连续的字节序列并进行高效追加:文件系统。 你不能只使用多个文件吗?

  • 如果您使用现代Linux FS(即不是FAT32),它将保留现有数据并分配额外空间。 这可以在预先分配的范围/块中或通过分段。 FS留给他们弄清楚。

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

  • 链接地址: http://www.djcxy.com/p/26957.html

    上一篇: Writing in the hole of a memory

    下一篇: What are the underlying data structures used for Redis?