内存分配方法及装置制造方法及图纸

技术编号:30342409 阅读:16 留言:0更新日期:2021-10-12 23:16
本申请提供了一种内存分配方法及装置。所述方法包括:当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;将所述目标内存块预先分配给所述目标任务。本申请通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。并增强LTE相关产品的竞争力。并增强LTE相关产品的竞争力。

【技术实现步骤摘要】
内存分配方法及装置


[0001]本申请涉及通信
,特别是涉及一种内存分配方法及装置。

技术介绍

[0002]随着LTE(Long Term Evolution,长期演进)系统的长期演进,日益增长的用户数量、更加复杂的业务模型以及多样化、高标准的客户需求催生着不断迭代更新的软件版本和新型产品,都使得目前主流通信网络设备的底层操作系统向多任务、高频次、大容量、多线程方向发展。此类主流通信网络设备包含但不限于BBU(Building Base band Unit,基带处理单元)、RRU(Radio Remote Unit,射频拉远单元)、OMC(Operation and Maintenance Center,操作维护中心)、MME(Mobility Management Entity,接入网络的控制点)等。但设备运行过程中也逐渐的暴露出一些任务阻塞、任务得不到访问、丢消息、内存池耗尽等问题,归根结底是底层操作系统处理的消息、进程和任务在访问内存时得不到高效的处理甚至分配内存失败的结果。
[0003]具体地,可以结合LTE系统无线通信标准进行阐述,如图1所示,现有的主控板可以通过系统配置使得指定的CPU(Central Processing Unit,中央处理器)核或者硬件线程运行特定的线程或者任务。应用程序大多是基于OSPAPI(Operating System PlaneApplication Programming Interface,系统中间件平台的应用程序接口)进行编程,主要完成消息通信及操作系统任务的功能调用等。基于进程的编程模型中,每个进程都能实例化一个OSP,每个OSP资源可以独立使用也可以相互共享。主控板的应用层、无线资源控制层、数据链路层、物理层、操作维护子系统等的消息和任务都通过调用OSP的各个进程进行局间消息的交互处理、任务的调用、执行和反馈等,由此OSP平台的内存管理就显得越发重要。
[0004]根据内存的访问权限和各任务调用OSP的关联性,分为栈内存、进程内存和共享内存。所谓进程内存是除了进程占内存外分配的进程内全局内存,包括全局变量的定义或调用操作系统接口分配的内存,栈内存是对进程内存的二次分配给线程专用的内存,栈内存和进程内存均为进程私有内存,而共享内存是为多进程或多核实现的共享内存。
[0005]现有实现对于内存池的分配流程,当有应用程序或者对系统进行的操作要调用任务A时,任务A向OSP发起申请内存的请求,请求中会携带申请内存的大小,OSP根据任务A的访问权限和调用内存的关联性为其分配满足需求大小的内存块,并回复分配内存的响应,响应消息中携带具体的内存ID,然后任务A开始进行消息或者函数的处理,处理完成后任务A向OSP发起释放内存的请求,OSP释放掉该内存并回复响应。
[0006]随着无线通信技术的不断演进,越来越多高频次、大容量的任务和消息调用和运行是都需要申请内存,尤其多核和多进程的场景下对于共享内存的使用率更高,现有的内存分配方案中任务每次使用内存前都要发起申请请求,然后OSP依据内存池的大小及占用情况为其分配合适的内存块,这无形中就增加了任务和消息申请内存的时延,增加了任务和消息占用内存的时间,内存长时间得不到释放,空闲内存越来越少,也就会引起其他任务
申请内存失败或者内存池耗尽的风险,也严重影响了产品的稳定性和可靠性。

技术实现思路

[0007]本申请实施例所要解决的技术问题是提供一种内存分配方法及装置,以解决现有技术中的内存分配方式,会增加任务和消息申请内存的时延,增加了任务和消息占用内存的时间,内存长时间得不到释放,空闲内存越来越少,也就会引起其他任务申请内存失败或者内存池耗尽的风险,也严重影响了产品的稳定性和可靠性的技术问题。
[0008]为了解决上述技术问题,本申请实施例提供了一种内存分配方法,包括:
[0009]当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
[0010]在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
[0011]将所述目标内存块预先分配给所述目标任务。
[0012]可选地,所述根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务预先对应的目标内存块,包括:
[0013]获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
[0014]获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
[0015]所述将所述目标内存块预先分配给所述目标任务,包括:
[0016]将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
[0017]可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
[0018]在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
[0019]比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
[0020]在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
[0021]可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
[0022]根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
[0023]根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
[0024]可选地,在所述获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间之后,还包括:
[0025]在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
[0026]为了解决上述技术问题,本申请实施例提供了一种内存分配装置,包括:
[0027]释放时间获取模块,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调
用后释放内存的释放时间;
[0028]目标内存块确定模块,用于在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
[0029]目标内存块分配模块,用于将所述目标内存块预先分配给所述目标任务。
[0030]可选地,所述目标内存块确定模块包括:
[0031]目标申请内存获取单元,用于获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
[0032]目标内存标识获取单元,用于获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;将所述目标内存块预先分配给所述目标任务。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务预先对应的目标内存块,包括:获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;所述将所述目标内存块预先分配给所述目标任务,包括:将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。3.根据权利要求1所述的方法,其特征在于,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;比较所述实际内存与所述目标内存块的目标内存之间的大小关系;在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。4.根据权利要求1所述的方法,其特征在于,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。5.根据权利要求1所述的方法,其特征在于,在所述获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间之后,还包括:在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。6.一种内存分配装置,其特征在于,包括:释放时间获取模块,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次...

【专利技术属性】
技术研发人员:魏晓可邹小龙
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1