介绍: 它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。 思想: 首先我先定义好一个空间说明表,然后根据空间长度的大小从小到大进行排序,接下来输入需求空间值大小,根据输入的需求空间值的大小遍历整个空间说明表,由于已经事先对空间说名表排好序所以当碰到合适的空间时,根据输入的大小和占用的大小做差,当差小于一定值时,则该存储整个被占用(这里我设置的值是小于等于1),如果大于1则根据该空间的首地址+输入的大小来划分出来一块空间然后剩余的空间的首地址更新一下,以及剩余空间的长度更新一下即可。需要注意的是在进行删除操作时,要清空所有数据。 主要算法代码:
1 | bool BF() |
数据结构、初始化函数以及一些数据:
1 |
|
结果: