最糟糕的情况是伙伴记忆系统中的外部碎片

时间:2011-06-09 15:42:20

标签: algorithm memory-management fragmentation

不幸的是,我找不到任何免费提供的文本,估计(二进制)伙伴内存系统中的最坏情况(外部)碎片开销。我发现只有M(1 + lg2 m),没有任何证据。该表达式估计(?)伙伴堆大小,该大小保证分配大小为M的总内存(m是最长的分配块)。 至少对于m = 2,这种估计似乎太粗糙了;证据也很有趣。

如果对此事有任何解释或联系,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

这似乎由Knuth的“计算机编程艺术”第1卷第2.5节中的练习41所涵盖。 Knuth认为块大小为1,2,... 2 ^ k,总存储分配为n - 引用

我们可以通过感应k证明这种分裂块所消耗的总储存量不会超过kn;因为在每个请求分割大小为2 ^(k + 1)的块之后,我们在拆分2 ^ k块中最多使用kn位置,而在非拆分块中最多使用n个位置。

(结束语) 所以我认为你可以查看这个,就好像你有一个大小高达2 ^(k + 1)的块的内存分配器,通过使用最多n个商店来提供最多使用n(k + 1)个商店的保证大小为2 ^(k + 1)的块,并将对较小块的请求推迟到可以使用最多nk存储来为这些请求提供服务的归纳魔术分配器。如果你从一个(k + 1)n块的池开始,魔术分配器永远不需要超过kn存储,所以大小为2 ^(k + 1)的块的分配器将始终至少有n个未被压缩的存储块块来处理来自。的大小为2 ^(k + 1)的请求。

相关问题