本发明涉及一种操作系统内存空间分配算法,属于操作系统内存资源管理技术领域。
背景技术:
在操作系统内存管理中,内存空间被动态划分为若干长度不等的区域,操作系统用空闲区表管理这些区域,该表记录着当前未被进程占有的所有空闲区域,操作系统进行内存分配时,首先查找空闲区表,找到一个空闲区,并将该空闲区分割成两部分,一部分的长度与进程所申请的长度相同,另一部分的长度为原长度与分配长度之差,并作为新的空闲区记录在空闲区表中。
当前,被广泛应用的内存空间分配算法有最先适应算法,最佳适应算法,最坏适应算法,然而,单一的内存空间分配算法只适用于特定的情况,不能在复杂多变的情况下降低内存碎片,导致内存资源的严重浪费。
技术实现要素:
本发明要解决的技术问题是提供一种操作系统内存空间分配算法,通过综合3种内存空间分配算法,克服每种内存空间分配算法应用中的缺陷,减少在复杂多变的情况下的内存碎片,提高内存资源的利用率。
本发明是通过如下技术方案来实现的:
一种操作系统内存空间分配算法,所述方法具体步骤包括:
步骤101.令i=1,i为空闲区表的序号;
步骤102.读取内存空闲区表第i个空闲区Ti;
步骤103.判断空闲区分配阈值Cim是否大于等于2,Cim表示内存空闲区表第i个空闲区Ti的分配阈值Cm, 空闲区分配阈值Cm为一个空闲区分别根据最先适应算法、最佳适应算法、最坏适应算法三种算法判断是否分配该空闲区的结果的总和,
若Cim≥2,则分配空闲区表第i个空闲区Ti,若Cim<2,则进行下一步的判断;步骤104.判断i是否小于n,n表示内存空闲区表中空闲区的个数,
若i小于n,则i加1,并返回步骤102,否则分配空闲区表第1个空闲区T1;步骤105.重复步骤102~步骤104。
进一步地,所述的空闲区分配阈值Cm的具体计算步骤包括:
步骤201.读取待分配的空闲区;
步骤202.应用最先适应算法判定是否分配该空闲区,若分配该空闲区,则C1=1,否则C1=0;
步骤203.应用最佳适应算法判定是否分配该空闲区,若分配该空闲区,则C2=1,否则C2=0;
步骤204.应用最坏适应算法判定是否分配该空闲区,若分配该空闲区,则C3=1,否则C3=0;
步骤205.计算空闲区分配阈值Cm,计算公式为Cm=C1+C2+C3。
本发明具有以下有益效果:
本发明通过综合3种内存空间分配算法,克服每种内存空间分配算法应用中的缺陷,减少在复杂多变的情况下的内存碎片,提高内存资源的利用率。
附图说明
图1为内存空间分配算法流程示意图;
图2为空闲区分配阈值Cm的计算流程。
具体实施方式
下面结合附图和实施例,对本发明作进一步说明,但本发明的内容并不限于所述范围。
实施例1:如图1、图2所示,一种操作系统内存空间分配算法,所述方法具体步骤包括:
步骤101.令i=1,i为空闲区表的序号;
步骤102.读取内存空闲区表第i个空闲区Ti;
步骤103.判断空闲区分配阈值Cim是否大于等于2,Cim表示内存空闲区表第i个空闲区Ti的分配阈值Cm, 空闲区分配阈值Cm为一个空闲区分别根据最先适应算法、最佳适应算法、最坏适应算法三种算法判断是否分配该空闲区的结果的总和,
若Cim≥2,则说明最少有两种算法认为应该分配该空闲区,此时分配空闲区表第i个空闲区Ti,若Cim<2,则说明最多有一种算法认为应该分配该空闲区,此时进行下一步的判断;
步骤104.判断i是否小于n,n表示内存空闲区表中空闲区的个数,
若i小于n,则i加1,并返回步骤102,若否则说明没有其他的空闲区等待判断是否分配,此时分配空闲区表第1个空闲区T1;
步骤105.重复步骤102~步骤104。
进一步地,所述的空闲区分配阈值Cm的具体计算步骤包括:
步骤201.读取待分配的空闲区;
步骤202.应用最先适应算法判定是否分配该空闲区,若分配该空闲区,则C1=1,否则C1=0;
步骤203.应用最佳适应算法判定是否分配该空闲区,若分配该空闲区,则C2=1,否则C2=0;
步骤204.应用最坏适应算法判定是否分配该空闲区,若分配该空闲区,则C3=1,否则C3=0;
步骤205.计算空闲区分配阈值Cm,计算公式为Cm=C1+C2+C3。
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。