【技术实现步骤摘要】
宽带载波内存管理算法
本专利技术涉及内存管理
,具体涉及宽带载波内存管理算法。
技术介绍
宽带载波模块要管理最大2040个从节点。而且还有各种抄表任务,都需动态审请内存。在嵌入式系统中,内存一般都比较小,内存资源十分紧张。嵌入式软件开发者在开发程序时总是要斤斤计较,以尽可能节省的方式使用内存,避免内存的浪费,从而在这方面花费了过多的精力。现有内存管理易产生内存碎片,碎片较多时,会耗尽内存,如果碎片累计到极端的情况下可能导致没有内存可用,最终导致程序瘫痪,系统崩溃的灾难后果。
技术实现思路
本专利技术是为了解决现有内存易于产生碎片的不足,提供一种不易于产生碎片,内存使用状态的检测区域小,并能快速检测内存使用状态的宽带载波内存管理算法。为了实现上述目的,本专利技术采用以下技术方案:宽带载波内存管理算法,内存管理算法包括内存初始化、内存申请、内存释放和内存状态查看;步骤(1)内存初始化先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;步骤(2)内存申请步骤(1-2-1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;步骤(1-2-2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1-2-5),步骤(1-2-4)如果内存区A中有内存可用,步骤(1-2-5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区 ...
【技术保护点】
宽带载波内存管理算法,其特征在于,内存管理算法包括内存初始化、内存申请、内存释放和内存状态查看;(1)内存初始化先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;(2)内存申请(1‑2‑1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;(1‑2‑2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1‑2‑5),(1‑2‑4)如果内存区A中有内存可用,(1‑2‑5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区A申请使用内存;如果内存区A中可用的内存容量小于程序要申请的内存容量,则程序先将内存区A中可用的内存申请用完,再将程序要申请的内存所剩下的内存向内存区B申请内存使用;在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;(3)内存释放在程序占用内存地址的最大时间以内释放该程 ...
【技术特征摘要】
1.宽带载波内存管理算法,其特征在于,内存管理算法包括内存初始化、内存申请、内存释放和内存状态查看;(1)内存初始化先将整块内存分成两部分内存,设这两部分内存分别为内存区A和内存区B,并且内存区A的内存容量小于内存区B的内存容量;(2)内存申请(1-2-1)在程序申请使用内存时,先查看内存区A中是否有内存可用,再查看程序要申请的内存容量;(1-2-2)如果内存区A中没有内存可用,则将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,然后跳转到步骤(1-2-5),(1-2-4)如果内存区A中有内存可用,(1-2-5)则判断内存区A中可用的内存容量是否大于或等于程序要申请的内存容量;如果内存区A中可用的内存容量大于或等于程序要申请的内存容量,则程序直接向内存区A申请使用内存;如果内存区A中可用的内存容量小于程序要申请的内存容量,则程序先将内存区A中可用的内存申请用完,再将程序要申请的内存所剩下的内存向内存区B申请内存使用;在程序申请到内存使用后,还需要对该程序所占用的内存地址进行编号,并设定该程序占用该内存地址的最大时间;(3)内存释放在程序占用内存地址的最大时间以内释放该程序占用的内存地址;(4)内存状态查看根据程序占用内存地址的最大时间查看该程序占用内存的状态,如果程序占用内存地址的时间超过该程序占用内存地址的最大时间,说明此内存地址上的内存没有释放,则需要检测此内存是否忘记释放,如果检测到此内存是忘记释放则进行自动释放,如果检测到此内存并没有忘记释放则等待此内存释放。2.根据权利要求1所述的宽带载波内存管理算法,其特征在于,(2-1)设内存区A的容量大小为H,设内存区B的容量大小为U;若设内存区A的容量大小是一个由N个存储块组成的二维数组,设内存区B的容量大小也是一个由M个存储块组成二维数组,若每个存储块的最小存储容量就是该存储块的最小内存单位C,则内存区A的容量大小H=N×C,内存区B的容量大小U=M×C;设程序要申请的内存容量大小为J,并设程序在申请内存使用时,在内存区A中还有可用的内存容量大小为K,并且0≤K≤H,0≤J≤H+U;(2-2)程序在申请使用内存时,先查看内存区A中可用内存容量大小K,再查看程序要申请的内存容量大小J;(2-3)当K=0时,(2-4)则先将内存区A中正在运行的一个程序的一段程序段转移到内存区B中去使用内存,从而让内存区A中有可用的内存容量,并且此时内存区A中可用的内存容量K>0,然后跳转到步骤(2-6),(2-5)当K>0时,(2-6)如果程序要申请的内存容量大小J≤内存区A中可用的内存容量大小K时,则程序直接向内存区A申请使用内存;如果程序要申请的内存容量大小J>内存区A中可用的容量大小K时,则程序先向内存区A申请使用内存,并将内存区A中可用的容量大小K全部申请用完,然后程序再向内存区B申请使用内存,并且此时程序要向内存区B申请使用的内存容量大小为J-K。3.根据权利要求1所述的宽带载波内存管理算法,其特征在于,定义一个二维数组作为内存管理区,并用该二维数组的一行表示一个内存容量大小的最小存储单元,则该内存管理区的内存容量大小就等于该二维数组的行数个最小存储单元,二维数组每行的内存容量大小等于该二维数组的列数大小,以二维数组的每一行作为一个最小的申请单元,行数和列数根据程序的需要进行调整;定义的二维数组包括定义二维数组的行数、定义二维数组的列数和定义静态的二维数组;再定义静态的一维数组,并且一维数组的元素个数与二维数组的行数一一对应;用该一维数组的元素来记录所述二维数组的行数申请情况的行位置编号标记;在内存申请时,是从二维数组中申请一定的行数,然后将相应的行数进行位置编号标记;具体是从已经定义的二维数组中申请一定的内存容量,然后返回申请到的内存容量在二维数组中的行位置...
【专利技术属性】
技术研发人员:常洪山,
申请(专利权)人:昊宏广泰北京科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。