用于表示/分配文件中的空闲空间的数据结构和算法

Hel*_*unt 7 filesystems algorithm data-structures

我有一个带有"洞"的文件,想要用数据填充它们; 我还需要能够释放"二手"空间并腾出空间.

我正在考虑使用映射偏移和长度的双映射.但是,如果文件中存在很小的间隙,我不确定这是否是最好的方法.位图可以工作,但我不知道如何在某些空间区域动态切换到动态.也许某种基数树是要走的路?

对于它的价值,我能够加速现代文件系统设计(ZFS,HFS +,NTFS,XFS,分机......),我发现他们的解决方案严重不足.

我的目标是节省相当多的空间(因此关注小碎片).如果我不关心那个,我会去找两个展开的树...一个按偏移排序,另一个按长度排序,绑定按偏移量排序.请注意,这为您提供了所有操作的分摊log(n),其工作设置时间为log(m)...相当不错......但是,如前所述,不处理有关高碎片的问题.

vz0*_*vz0 0

最简单的解决方案是空闲列表:保留空闲块的链表,重用空闲空间来存储列表中下一个块的地址。

  • @Helen Hunt:你不需要保持它排序。它是一个简单的队列或堆栈。看看“malloc”是如何工作的。我并不是说这是一个好的解决方案,但它并没有你想象的那么糟糕。 (4认同)