一种配置存储单元的方法及装置与流程

文档序号:11261915阅读:240来源:国知局
一种配置存储单元的方法及装置与流程

本发明涉及内存资源管理技术领域,尤其涉及一种配置存储单元的方法及装置。



背景技术:

通用串行总线(universalserialbus,usb)模块是长期演进(longtermevolution,lte)嵌入式系统不可缺少的组成部分,usb模块从lte嵌入式系统的内存池中申请内存单元,用于数据传输。而lte协议栈应用程序也是从lte嵌入式系统的内存池申请内存空间。

usb模块每次从内存缓存区申请一个包含多个存储单元的存储单元组来用于接收数据,数据接收完成之后需要申请新的存储单元组来接收下一个数据包。在高吞吐量通信场景下,usb模块的内存申请释放和lte协议栈的任务调度的频率都会急剧增加,而usb模块频繁地向内存池申请存储单元组,大大增加了usb模块与lte协议栈访问内存池冲突的可能性。



技术实现要素:

基于上述现有技术的缺陷和不足,本发明提出一种配置存储单元的方法及装置,能够降低usb模块向内存池申请内存单元的频率,降低usb模块与lte协议栈访问内存池冲突的可能性。

一种配置存储单元的方法,该方法包括:

向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;

当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;

当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。

优选地,在将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中后,该方法还包括:

检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;

如果存储所述数据的存储单元组中,存在未被占用的存储单元,则回收所述未被占用的存储单元;

当回收的未被占用的存储单元的数量,到达所述第二数量时,由回收的第二数量的未被占用的存储单元组成新的存储单元组。

优选地,所述回收所述未被占用的存储单元,包括:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

优选地,再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

一种配置存储单元的装置,包括:

第一申请单元,用于向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;

分配单元,用于当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;

第二申请单元,用于当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。

优选地,该装置还包括:

检测处理单元,用于检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;如果存储所述数据的存储单元组中,存在未被占用的存储单元,则回收所述未被占用的存储单元;当回收的未被占用的存储单元的数量,到达所述第二数量时,由回收的第二数量的未被占用的存储单元组成新的存储单元组。

优选地,所述检测处理单元回收所述未被占用的存储单元时,具体用于:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

优选地,所述第二申请单元再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

一种配置存储单元的装置,包括:

存储器和处理器;

其中,所述存储器与所述处理器连接,用于存储程序和程序运行过程中产生的数据;

所述处理器,用于通过运行所述存储器中的程序,实现以下功能:

向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。

优选地,所述处理器还用于:

检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;如果存储所述数据的存储单元组中,存在未被占用的存储单元,则回收所述未被占用的存储单元;当回收的未被占用的存储单元的数量,到达所述第二数量时,由回收的第二数量的未被占用的存储单元组成新的存储单元组。

优选地,所述处理器回收所述未被占用的存储单元时,具体用于:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

优选地,所述处理器再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

本发明提出的配置存储单元的方法,向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。上述方案在向内存池申请内存单元组时,一次性申请多个内存单元组,供usb模块使用,当可用的内存单元组数量小于设定阈值时,才再次向内存池申请内存单元组,降低了usb模块向内存池申请内存单元组的频率,从而降低了usb模块与lte协议栈访问内存池冲突的可能性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例提供的一种配置存储单元的方法的流程示意图;

图2是本发明实施例提供的另一种配置存储单元的方法的流程示意图;

图3是本发明实施例提供的一种配置存储单元的装置的结构示意图;

图4是本发明实施例提供的另一种配置存储单元的装置的结构示意图;

图5是本发明实施例提供的另一种配置存储单元的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种配置存储单元的方法,参见图1所示,该方法包括:

s101、向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;

具体的,本发明实施例技术方案应用于lte嵌入式系统的usb模块,当usb模块传输数据时,需要先将数据缓存到由存储单元组成的存储单元组中,再从存储单元组中传输数据。因此,usb模块传输数据时,需要首先向内存池申请存储单元组。采用在本发明实施例技术方案中,当usb模块向内存池申请存储单元组时,一次性申请第一数量的存储单元组,上述第一数量根据实际需求可灵活设定。每一个存储单元组,包含第二数量的存储单元,上述第二数量也可以根据实际需求灵活设定。

在申请第一数量的存储单元组后,对于这些存储单元组的管理,一种可选的方式是,设置一个专门的数组来管理这些存储单元组,数组的一个元素保存着一个存储单元组的首地址。刚开始时数组里没有有效数据,那么从下标0开始,把新申请的存储单元组的首地址放到这个数组元素里,数组中第一个下标为0的元素后面的元素下标分别是1、2、3…以此类推。

当接收到来自usb驱动的数据时,执行步骤s102、将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;

具体的,当usb模块通过usb驱动接收数据时,首先从存储存储单元组的数组中,读取一个空闲的存储单元组的首地址,将数据存储到空闲存储单元组所表示的存储地址。

为了保证数据存储的秩序,本发明实施例设定usb模块从申请的第一数量的存储单元数组的第一个存储单元数组开始存储数据。即第一次读取数组中的第一个存储单元组的首地址,第二次读取数组中的第二个存储单元组的首地址,以此类推。

当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,执行步骤s103、再次向内存池申请存储单元组。

具体的,在usb模块传输数据,不断地占用已申请的存储单元组的同时,还会持续监测已申请的第一数量的存储单元组中,所剩下的空闲存储单元组的数量,当剩下的存储单元组的数量,小于设定的数量阈值时,再次向内存池申请内存单元组,以保证有足够的空闲存储单元组用于存储数据。步骤s103的具体执行方法与步骤s101的执行过程相同,只是申请的存储单元组数量不同。例如,当usb模块监测发现剩余的空闲存储单元组的数量,已经不足上述第一数量的一半,则usb模块再次向内存池申请内存单元组。

需要说明的是,本发明实施例设置数组来存放已申请的存储单元组的首地址,当usb模块监测发现数组中的存储单元组首地址的数量少于设定的数量阈值时,再次向内存池申请存储单元组。

本发明实施例提出的配置存储单元的方法,向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。上述方案在向内存池申请内存单元组时,一次性申请多个内存单元组,供usb模块使用,当可用的内存单元组数量小于设定阈值时,才再次向内存池申请内存单元组,降低了usb模块向内存池申请内存单元组的频率,从而降低了usb模块与lte协议栈访问内存池冲突的可能性。

可选的,在本发明的另一个实施例中,参见图2所示,在将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中后,该方法还包括:

s203、检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;

具体的,在高数据量要求下,lte嵌入式系统采用ccdncm协议。即usb主机一次性可发送多个ip数据包来降低嵌入式系统处理usb中断的频率。主机发送数据的触发条件有三个,第一是数据包总个数达到上限;第二是数据长度达到上限;第三是与上一次发送的时间间隔达到上限。只要满足三个条件之一,主机就会发送数据,所以数据的长度是不固定的。

一般情况下,存储单元组的长度(所包含的存储单元数量),要不小于usb模块一次接收的数据的最大长度,以保证一条数据可以被存储进一个存储单元组。因此,通常情况下,存储单元组在存储数据后,都会有存储单元没有被占用。

如果存储所述数据的存储单元组中,存在未被占用的存储单元,则执行步骤s204、回收所述未被占用的存储单元;

具体的,在现有的数据存储处理方法中,一个存储单元组在存储数据后,不论所有的存储单元是否都存储了数据,都要将整个存储单元组释放,这样造成了存储单元组中,没有存储数据的存储单元的浪费。而在本发明实施例中,将存储单元组中未被占用的存储单元保留下来,用于存储新接收的数据。这样,提高了对存储单元组的利用率,利于减少向usb模块向内存池申请内存单元组的频率。

当回收的未被占用的存储单元的数量,到达所述第二数量时,执行步骤s205、由回收的第二数量的未被占用的存储单元组成新的存储单元组。

具体的,当回收的存储单元的数量,足够组成一个存储单元组,即足够上述第二数量时,由这些回收的第二数量的存储单元,组成一个新的存储单元组,用于存储新接收的数据。

上述方法在占用存储单元组中的存储单元的同时,回收存储单元组中没有被使用的存储单元,能够一定程度上增加可用的存储单元组的数量,减少向内存池申请存储单元组的频率,从而减少usb模块与lte协议栈访问内存池冲突的可能性。

本实施例中的步骤s201、s202、s206,分别对应图1所示的方法实施例中的步骤s101、s102、s103,其具体内容请参见对应图1所示的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,所述回收所述未被占用的存储单元,包括:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

具体的,本发明实施例提出一种可行的回收存储单元组中未被占用的存储单元的方式。在回收未被占用的存储单元时,将未被占用的存储单元的地址存储到缓存器中,并且,设置未被占用的存储单元只用于存储来自usb驱动的数据,不能被其它模块占用。

当缓存器中的存储单元的数量,足够组成一个新的存储单元组时,将存储的存储单元依次连接,组成一个新的存储单元组,并将新的存储单元组的首地址存储到用于存储存储单元组首地址的数组中,这样,数组中就多了一个存储单元组的首地址,相当于多了一个新的存储单元组可以用于usb模块传输数据使用。

可选的,在本发明的另一个实施例中,再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

具体的,在本发明实施例中,设定再次向内存池申请的内存单元组的数量,不大于上述数组中能够存储的存储单元组首地址的数量。一方面保证上述数组能够存储所有可用的存储单元组的首地址;另一方面防止新存储的存储单元组首地址覆盖原有的,尚未被读取的存储单元组首地址,造成存储单元组的浪费。

本发明实施例公开了一种配置存储单元的装置,参见图3所示,该装置包括:

第一申请单元301,用于向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;

分配单元302,用于当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;

第二申请单元303,用于当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。

具体的,本实施例中的各个单元的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

本发明实施例提出的配置存储单元的装置,在为usb模块配置存储单元时,第一申请单元301向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;当usb模块接收到来自usb驱动的数据时,分配单元302将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,第二申请单元303再次向内存池申请存储单元组。上述方案在向内存池申请内存单元组时,一次性申请多个内存单元组,供usb模块使用,当可用的内存单元组数量小于设定阈值时,才再次向内存池申请内存单元组,降低了usb模块向内存池申请内存单元组的频率,从而降低了usb模块与lte协议栈访问内存池冲突的可能性。

可选的,在本发明的另一个实施例中,参见图4所示,该装置还包括:

检测处理单元304,用于检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;如果存储所述数据的存储单元组中,存在未被占用的存储单元,则回收所述未被占用的存储单元;当回收的未被占用的存储单元的数量,到达所述第二数量时,由回收的第二数量的未被占用的存储单元组成新的存储单元组。

具体的,本实施例中的检测处理单元304的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,检测处理单元304回收所述未被占用的存储单元时,具体用于:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

具体的,本实施例中的检测处理单元304的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,第二申请单元303再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

具体的,本实施例中的第二申请单元303的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

本发明实施例公开了另一种配置存储单元的装置,参见图5所示,包括:

存储器501和处理器502;

其中,存储器501与处理器502连接,用于存储程序和程序运行过程中产生的数据;

处理器502,用于通过运行存储器501中的程序,实现以下功能:

向内存池申请第一数量的存储单元组;其中,每一存储单元组包括第二数量的存储单元;当接收到来自usb驱动的数据时,将所述数据存储到所述第一数量的存储单元组中的空闲的存储单元组中;当所述第一数量的存储单元组中的空闲的存储单元组数量小于设定的数量阈值时,再次向内存池申请存储单元组。

具体的,本实施例中的各个部分的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,处理器502还用于:

检测存储所述数据的存储单元组中,是否存在未被占用的存储单元;如果存储所述数据的存储单元组中,存在未被占用的存储单元,则回收所述未被占用的存储单元;当回收的未被占用的存储单元的数量,到达所述第二数量时,由回收的第二数量的未被占用的存储单元组成新的存储单元组。

具体的,本实施例中的处理器502的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,处理器502回收所述未被占用的存储单元时,具体用于:

保持所述未被占用的存储单元不被释放,并且设置所述未被占用的存储单元只用于存储来自所述usb驱动的数据。

具体的,本实施例中的处理器502的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

可选的,在本发明的另一个实施例中,处理器502再次向内存池申请的存储单元的数量,不大于所述第一数量的存储单元组中已经被使用的存储单元组的数量。

具体的,本实施例中的处理器502的具体工作内容,请参见对应的方法实施例的内容,此处不再赘述。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1