我的答案如下:
内存在分配时不会增多碎片,碎片是在内存释放时增加的。假设分配内存时永远不会消去碎片(实际不可能,内存总是按照单元分配,且最优匹配会更容易消去碎片),改变碎片数的唯二途径就是:一、在释放内存时无法与其他碎片合并,增加一个碎片;二、归还内存时把两个相邻碎片连接到一起,减少一个碎片。基于假设情况一必然是某个碎片先被分配一部分,之后相邻的内存又被分配且未归还,现在先被分配的内存归还了无法与其他碎片合并。因为最佳匹配总是会选最小的碎片分配,只会剩下更小的更难分配的碎片,所以我认为情况一更容易在最差匹配中出现。而在无法得到进程信息的情况下,碎片的归还理应看作与算法不相关的随机因素,所以我认为情况二对两种算法的碎片数的影响是同等的。现在去掉假设,即认为分配内存可能减少碎片,这个被减少的碎片在回来时也可能增加碎片,这只对最优匹配更加有利,不会影响结论。所以结论是最差匹配的外碎片不会比最优适配算法少,相反最优适配算法的外碎片应该会较少。
请问老师这个逻辑有没有问题?