![](https://csdnimg.cn/release/download_crawler_static/89270397/bg5.jpg)
实部分设置一些用于控制分区分配得信息,以及用于链接各分区所用得前
向指针,在分区尾部则设置一后向指针。通过前后相链接指针,可将所有
得空闲分区链接成一个双向链。
1.1.3. 动态分区分配算法
首次适应算法(FF算法):FF 算法要求空闲分区链以地址递增得次
序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足
要求得空闲分区为止。然后再按照作业得大小,从该分区中划出一块内存
空间,分配给请求者,余下得空闲分区仍留在空闲链中。若从链首直至链
尾都不能找到一个能满足要求得分区,则表示系统中已没有足够大得内存
分配给该进程,内存分配失败,返回。
最佳适应(BF 算法):BF 算法就是指,每次为作业分配内存时,总就
是把能满足要求、又就是最小得空闲分区分配给作业,避免“大材小
用”.为了加速寻找,该ﻭ算法要求将所有得空闲分区按其容量以从大到小
得顺序形成一空闲分区链。这样,第一次找到得能满足要求得空闲区必然
就是最佳得.
最坏适应算法(WF算法):与最佳适应算法正好相反,在扫描整个空
闲分区表或链表时,总就是挑选一个最大得空闲区,从中分割一小部分存
储空间给作业使用,以至于存储器中缺失大得空闲分区。该算法要求,将
所有得空闲分区,按其容量以从大到小得顺序形成一空闲分区链,查找时,
只要瞧第一个分区就是否满足作业要求即可。
1.1.4. 回收内存
(1)回收分区与插入点得后一空闲分区 F2相邻接。此时也可将两分
区合并,形成新得空闲分区,但用
(2)回收区得首址作为新空闲区得首址,大小为两者之与.
(3)回收区同时与插入点得前、后两个分区邻接,此时将三个分区合
并,使用 F1得表项与F1 得首址,取消 F2 得表项,大小为三者之与.
(4)回收区既不与 F1 邻接,也不与 F2 邻接。这时应为回收区单独建
立一个新表项,填写回收区得首址与大小,并根据其首址插入到空闲链表
中得适当位置。
1.2 参数定义
#define OK 1 //完成
#define ERROR 0 //出错
typedef int Status;
LinkList first;//头结点