基于顺序搜索的动态分区分配算法

基于顺序搜索的动态分区分配算法

实现动态分区分配,通常是将系统中的空闲分区链接成一个链。顺序搜索是指依次搜索空闲分区链上的空闲分区,去寻找一个其大小能满足要求的分区,适用于不太大的系统。

  • 首次适应(first fit,FF)算法:从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为之。再按照作业大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。

    • 优点:优先利用内存中低址部分的空间,保留了高址部分的大空闲区,为以后达到的大作业分配大的内存空间创造了条件。
    • 缺点:低址部分不断被划分,会留下许多难以利用的、很小的空闲分区,称为碎片。每次查找都是从低址部分开始,碎片越多,开销越大。
  • 循环首次适应(next fit,NF)算法:较之FF算法,NF不是每次都从链首开始查找,而是从上一次找到的空闲分区的下一个空闲分区开始查找,直至找到一个满足要求的空闲分区,如果寻到链尾,链尾空闲分区的大小仍不能满足要求,则应返回第一个空闲分区。实现该算法,应设置一起始查询指针,用于指示下一次起始查询的空闲分区。

    • 优点:使内存中的空闲分区分布得更均匀,从而减少查找空闲分区时的开销。
    • 缺点:缺乏大的空闲分区。
  • 最佳适应(best fit,BF)算法:最佳是指每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。

    • 缺点:每次分配后所切割下来的剩余部分总是最小的,会留下许多难以利用的碎片。
  • 最坏适应(worst fit,WF)算法:WF算法于BF算法正好相反,它在扫描整个空闲分区表或链表时,总是挑选一个最大的空闲区。该算法要求将所有空闲分区,按其容量以从大到小的顺序形成一空闲分区链。

    • 优点:划分后,剩下的空闲区不至于太小,产生碎片的可能性最小。查找效率很高,只要看第一个分区能否满足作业要求即可。
    • 缺点:存储器中缺乏大的空闲分区
posted @ 2022-07-17 11:53  _小斑鸠  阅读(710)  评论(0)    收藏  举报