介绍: 首次适应算法从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。 实现思路: 首先我先定义好一个空间说明表(在这里我定义的说明表已经实现按照地址空间大小排好序),然后根据输入的需求空间值的大小遍历整个空间说明表,当碰到首次合适的空间时,根据输入的大小和占用的大小做差,当差小于一定值时,则该存储整个被占用(这里我设置的值是小于等于1),如果大于1则根据该空间的首地址+输入的大小来划分出来一块空间然后剩余的空间的首地址更新一下,以及剩余空间的长度更新一下即可。需要注意的是在进行删除操作时,要清空所有数据。 代码:
1 | //首次适应算法 |
上面给出的是主要算法,接下来给出一些定义的结构体、初始化函数以及使用到Deque队列:
1 |
|
最终结果为: