关于首次适应算法、最佳适应算法和最差适应算法,先看一下百度百科的解释,已经说出了三者的最大区别。
首次适应算法(first-fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。
最佳适应算法(best-fit):
从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。
最差适应算法(worst-fit):
它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的节点大小趋于均匀。
下面看一个实例:Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, and 426 KB (in order)? Which algorithm makes the most efficient use of memory?
首次适应算法: 找到第一个满足条件的即可
为212k分配空间:
依次找寻,找到第一个大于212k的空闲区;
找到第二个空闲区500k>212k,分配给212k,剩余288k空闲区;
为417k分配空间:
依次找寻,找到第一个大于417k的空闲区;
找到第五个空闲区600k>417k,分配给417k,剩余183k空闲区 为112k分配空间ÿ