文章目录
-
- 一、目的
- 二、总体设计
-
- 1、首次适应算法(First Fit)
- 2、循环首次适应算法(Next Fit)
- 3、最佳适应算法(Best Fit)
- 4、最坏适应算法(Worst Fit)
- 三、详细设计
-
- 1、流程图设计
- 2、实验环境
- 四、使用
-
- 1、设置系统资源
- 2、最佳适应算法
- 3、首次适应算法
- 4、循环首次适应算法
- 5、最坏适应算法
- 五、附件
一、目的
实现对存储器动态分区分配算法的认识。掌握首次适应算法、循环适应算法、最坏适应算法、最佳适应算法的内存分配过程。掌握内存回收的策略。
二、总体设计
1、首次适应算法(First Fit)
算法思想:将空闲分区链以地址递增的顺序连接;在进行内存分配时,从链首开始顺序查找,直到找到一块分区的大小可以满足需求时,按照该作业的大小,从该分区中分配出内存,将剩下的空闲分区仍然链在空闲分区链中。
优点:高址部分的大的空闲分区得到保留,为大作业的内存分配创造了条件;
缺点:
(1)每次都是优先利用低址部分的空闲分区,造成低址部分产生大量的外碎片。
(2)每次都是从低址部分查找,使得查找空闲分区的开销增大;
2、循环首次适应算法(Next Fit)
算法思想:分配内存时不是从链首进行查找可以分配 内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找, 直到找到可以为该进程分配内存的空闲分区。
优点:(1)使得空闲分区分布更加均匀;空闲分区的查找开销小;
缺点:(1)高址部分的大空闲分区被分小,使得大作业进入无法分配内存;
3、最佳适应算法(Best Fit)
算法思想:将空闲分区链中的空闲分区按照空闲分区由小到大的顺序排序,从而形成空闲分区链。每次从链首进行查找合适的空闲分区为作业分配内存,这样每次找到的空闲分区是和作业大小最接近的,所谓“最佳”。
优点:(1)第一次找到的空闲分区是大小最接近待分配内存作业
大小的;
缺点:(2)产生大量难以利用的外部碎片。
4、最坏适应算法(Worst Fit)
算法思想:与最佳适应算法刚好相反,将空闲分区链的分区按照从大到小的顺序排序形成空闲分区链,每次查找时只要看第一个空闲分区是否满足即可。
优点:(1)效率高,分区查找方便;
缺点:(2)当小作业把大空闲分区分小了,那么,大作业就找不到合适的空闲分区。
三、详细设计
1、流程图设计
① 首次适应算法 (First Fit) 流程图
② 循环首次适应算法 (Next Fit) 流程图
③ 最佳适应算法 (Best Fit) 流程图
④ 最坏适应算法算法 (Worst Fit) 流程图
2、实验环境
jdk8、Eclipse(idea也兼容)
四、使用
1、设置系统资源
设置系统资源,首先设置内存容量数的大小,以5为例;然后设置A、C、D、E、F一共5个资源,其大小分别为88、66、20、150、120。
容量设置完成后,程序会为其分配资源,如下:
2、最佳适应算法
最佳适应算法的算法思想是从小到大寻找合适的分区。首先选择最佳适应算法,然后输入所需要的资源数大小,以20为例。
经过计算,程序会选择D资源进行分配,其次会选择C资源进行分配,如下:
3、首次适应算法
首次适应算法的算法思想是从头到尾寻找合适的分区。首先选择首次适应算法,然后输入所需要的资源数大小,以22和77为例。
经过计算,程序会选择A资源进行分配,其次会选择E资源进行分配,如下 :
4、循环首次适应算法
循环首次适应算法的算法思想是每次从上次查找结束的位置开始查找。首先选择循环首次适应算法,然后输入所需要的资源数大小,以10、10和20为例。
经过计算,程序会选择A资源进行分配,其次会选择C资源进行分配,最后会选择E资源进行分配,如下:
5、最坏适应算法
最坏适应算法的算法思想是优先使用大分区。首先选择最坏适应算法,然后输入所需要的资源数大小,以10、100和2为例。
经过计算,程序会选择F资源进行分配,其次会选择F资源进行分配,最后会选择A资源进行分配,如下:
五、附件
下载地址:https://download.csdn.net/download/weixin_48916759/87803371