平均内存使用情况 - 算法分析

时间:2012-01-19 22:52:41

标签: algorithm memory-management complexity-theory

正如标题所述,我在分析内存分配器的平均情况内存使用时遇到了一些困难(快速适合)。我的目标是确定已分配块的平均情况内部碎片(使用快速适配内存分配器)。

到目前为止,我还没有真正得到任何地方,因为我真的不知道如何分析平均情况。我的第一个想法是,假设你有 T(n),那就是在分配大小为n的内存块(内部碎片)时浪费的内存。此外,假设用于分配大小为n的存储块的概率是P(n),则平均情况下的存储器浪费基本上应该是 T(n1)P(n1)+的总和( Tn2)P(n2)+ .... + T(nk)P(nk)

问题是我不知道T(n)和P(n)..或者甚至可以不做任何假设?

对于最坏的情况,我认为它是O(n-1)= O(n)。因为在最坏的情况下,我们只有一个“快速列表”处理,例如, first-fit 。那么最糟糕的可能情况是我们只有一个大块n字节可用于分配,并且请求的内存只有1字节,那么最多浪费n-1个字节?

我可能没有任何意义,但任何帮助使这一点更清楚,我们将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:2)

当进行n尺寸分配时,让T(n)成为浪费的空间。计算T(n)应该非常简单,对吧?对于块大小为b,T(n)= b - (n%b)?

第二部分更加细致入微。这取决于分配请求大小的分布。你可以假设流失是统一的,在这种情况下你的平均浪费是b / 2.

b / 2的推导:浪费的可能性i对于任何i(均匀假设)是1 / b。预期的浪费= sum_i Probability_i Wastage_i = 0 / b + 1 / b + .... +(b-1)/ b =(b-1)/ 2,大约等于b / 2.