内存管理装置和方法制造方法及图纸

技术编号:17211735 阅读:18 留言:0更新日期:2018-02-07 22:59
本发明专利技术公开了一种内存管理装置和方法,属于计算机领域。该内存管理装置通过对内存块和内存分片进行分层次管理,并根据内存分片的实际占用情况,灵活的申请或释放内存块,实现了内存块的动态管理,能够满足业务的突发性,增强了内存资源的共享性,避免了资源浪费,提高了内存使用效率。

Memory management devices and methods

The invention discloses a memory management device and method, which belongs to the field of computer. The memory management device based on a block of memory and memory fragments in the hierarchical management, and according to the actual occupancy of memory fragmentation, flexible application or free memory, to achieve the dynamic management of memory block, can burst to satisfy business, enhance the sharing of memory resources, avoid the waste of resources. To improve the efficiency of memory.

【技术实现步骤摘要】
内存管理装置和方法
本专利技术涉及计算机领域,特别涉及一种内存管理装置和方法。
技术介绍
随着计算机技术和通信技术的发展,数据通信业务在人们的生活中已经越来越常见,数据通信业务中通常包括数据接收、数据存储以及数据转发的业务,而以上这些业务均需要对内存进行频繁地操作,具体地,接收数据时要申请内存,而后将数据存储在申请到的内存中,数据经过特定处理后再转发出去,需要释放内存,数据通信业务的频繁访问内存特性对内存管理提出了更高的要求,也即是碎片少、效率高、抗突发能力强等。相关技术中,通常采用静态的方式进行内存管理,即,将内存配置为多个大小相同的内存块,再将每个内存块配置为多个长度相同的内存分片,将同一长度的内存分片的内存地址存储至同一个内存队列,以采取内存队列的形式来维护内存分片的分配,例如,在有业务申请内存时,从上述内存队列头部取出一个空闲内存的地址进行分配,在释放内存时,将待释放内存的地址存储于上述内存队列尾部。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:上述静态方式的内存管理,对于每种业务,均设置了固定数量的内存块,然而,业务往往具有突发性,一个业务很可能无法全部占用一个内存队列所占用的所有内存块,从而导致内存资源的浪费,内存使用效率较低。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种内存管理装置和方法。首先,本专利技术提供了一种内存管理装置,所述内存管理装置包括多个功能模块,该多个功能模块用于监控至少两个内存块的状态;当一个内存块已进行内存分片时,则所述内存块的状态为占用状态,当一个内存块未进行内存分片时,则所述内存块的状态为空闲状态;监控至少两个内存分片的状态,所述至少两个内存分片包括至少两种分片长度,每个内存分片由内存块划分而成;如果同一长度的空闲内存分片数量少于内存块申请阈值,则根据所述至少两个内存块的状态,申请处于空闲状态的内存块进行划分;如果同一长度的空闲内存分片数量大于内存块释放阈值,则释放所述同一长度的空闲内存分片;接收到业务请求时,为所述业务请求分配相应长度的空闲内存分片;根据所述内存分片管理模块分配到的空闲内存分片的内存地址,存储所述业务请求对应的数据。本专利技术提供的内存管理装置,通过对内存块和内存分片进行分层次管理,并根据内存分片的实际占用情况,灵活的申请或释放内存块,实现了内存块的动态管理,能够满足业务的突发性,增强了内存资源的共享性,避免了资源浪费,提高了内存使用效率。其次,本专利技术还提供了一种内存管理方法,该方法具体包括:监控至少两个内存块的状态;当一个内存块已进行内存分片时,则所述内存块的状态为占用状态,当一个内存块未进行内存分片时,则所述内存块的状态为空闲状态;监控至少两个内存分片的状态,所述至少两个内存分片包括至少两种分片长度,每个内存分片由内存块划分而成;如果同一长度的空闲内存分片数量少于内存块申请阈值,则根据所述至少两个内存块的状态,申请处于空闲状态的内存块进行划分;如果同一长度的空闲内存分片数量大于内存块释放阈值,则释放所述同一长度的空闲内存分片;在接收到业务请求时,为所述业务请求分配相应长度的空闲内存分片;根据分配到的空闲内存分片的内存地址,存储所述业务请求对应的数据。本专利技术提供的内存管理方法,通过对内存块和内存分片进行分层次管理,并根据内存分片的实际占用情况,灵活的申请或释放内存块,实现了内存块的动态管理,能够满足业务的突发性,增强了内存资源的共享性,避免了资源浪费,提高了内存使用效率。在一种可能的设计中,所述方法还包括:对于任一种长度的内存分片,若在预设时间内没有接收到对所述长度的内存分片的申请,则释放所述长度的内存分片所占用的内存块。通过上述内存管理方法,可以根据业务实际的发生情况,判断是否需要回收内存块,供其他业务对应的内存分片来进行申请,以提高内存使用效率。在一种可能的设计中,对于任一种长度的内存分片,以未使用内存块队列、已耗尽内存块队列以及正使用内存块队列的形式管理所述长度的内存分片所占用的内存块的内存地址;所述未使用内存块队列包括所述长度的内存分片中所有内存分片均空闲的内存块的内存地址;所述已耗尽内存块队列包括所述长度的内存分片中所有内存分片均被占用的内存块的内存地址;所述正使用内存块队列包括所述长度的内存分片中部分内存分片被占用的内存块的内存地址。通过上述内存管理方法,采用多种职能的队列对某种长度的内存分片所占用的内存块进行管理,能够大大减少业务申请内存时的延时。另外,可以减少页表切换,降低查找页表以及切换页表等所需的计算量。在一种可能的设计中,在接收到业务请求时,为所述业务请求分配相应长度的空闲内存分片包括:在接收到所述业务请求时,从所述业务请求对应长度的空闲内存分片中,优先分配所占用内存块中空闲内存分片数量最少的内存块中的空闲内存分片。通过上述内存管理方法,可以保证内存中数据写入的连续性,避免产生过多的内存碎片。在一种可能的设计中,对于任一种长度的内存分片,采用多级位图Bitmap查找表的方式维护所述长度的内存分片的占用情况。通过多级位图Bitmap查找表的方式,可以有序的维护内存分片的实际占用情况。在一种可能的设计中,所述方法还包括:对于任一种大小的内存块,检测所述大小的内存块中处于占用状态的内存块的比例是否小于第一预设阈值;若所述比例小于所述第一预设阈值,则卸载所述大小的内存块中至少一个处于空闲状态的内存块。在一种可能的设计中,所述方法还包括:对于任一种大小的内存块,检测所述大小的内存块中处于占用状态的内存块的比例是否大于第二预设阈值;若所述比例大于所述第二预设阈值,则从系统内存中加载至少一个处于空闲状态的内存块。通过根据内存块的实际占用情况,来确定从系统内存进行加载或卸载,可以实现灵活的内存管理,也能够满足不同场景下业务的数据量需求。在一种可能的设计中,所述方法还包括:对于任一种长度的内存分片,以双指针后进先出LIFO缓存的形式,缓存预设数量的所述长度的空闲内存分片的内存地址;相应地,在接收到业务请求时,从与所述业务请求响应的所述双指针后进先出LIFO缓存中分配空闲内存分片的内存地址。通过上述内存管理方法,采用预先获取一些内存分片的内存地址,以备为业务请求分配使用,可以降低对空闲内存分片的定位所需的时间,大大降低了业务申请内存的时延。在一种可能的设计中,所述方法还包括:对于任一种长度的内存分片,检测所述双指针后进先出LIFO缓存中的内存地址数量低于预设阈值;若所述内存地址数量低于所述预设阈值,则获取预设数量的内存分片的内存地址存储至所述双指针后进先出LIFO缓存中。通过上述内存管理方法,可以保证缓存中内存地址数量,大大降低了业务申请内存的时延。再次,本专利技术实施例还提供了一种数据通信设备,该数据通信设备包括接收设备、发送设备、系统主机、内存管理设备和内存,其中,内存管理设备被配置为监控至少两个内存块的状态;当一个内存块已进行内存分片时,则所述内存块的状态为占用状态,当一个内存块未进行内存分片时,则所述内存块的状态为空闲状态;监控至少两个内存分片的状态,所述至少两个内存分片包括至少两种分片长度,每个内存分片由内存块划分而成;如果同一长度的空闲内存分片数量少于内存块申请阈值,则根据所述至少两个内存块的状态,申请处于本文档来自技高网...
内存管理装置和方法

【技术保护点】
一种内存管理装置,其特征在于,包括:内存块状态监控模块,用于监控至少两个内存块的状态;当一个内存块已进行内存分片时,则所述内存块的状态为占用状态,当一个内存块未进行内存分片时,则所述内存块的状态为空闲状态;内存分片监控模块,用于监控至少两个内存分片的状态,所述至少两个内存分片包括至少两种分片长度,每个内存分片由内存块划分而成;所述内存分片监控模块,还用于如果同一长度的空闲内存分片数量少于内存块申请阈值,则根据所述至少两个内存块的状态,申请处于空闲状态的内存块进行划分;如果同一长度的空闲内存分片数量大于内存块释放阈值,则释放所述同一长度的空闲内存分片;内存分片管理模块,用于接收到业务请求时,为所述业务请求分配相应长度的空闲内存分片;数据存储模块,用于根据所述内存分片管理模块分配到的空闲内存分片的内存地址,存储所述业务请求对应的数据。

【技术特征摘要】
1.一种内存管理装置,其特征在于,包括:内存块状态监控模块,用于监控至少两个内存块的状态;当一个内存块已进行内存分片时,则所述内存块的状态为占用状态,当一个内存块未进行内存分片时,则所述内存块的状态为空闲状态;内存分片监控模块,用于监控至少两个内存分片的状态,所述至少两个内存分片包括至少两种分片长度,每个内存分片由内存块划分而成;所述内存分片监控模块,还用于如果同一长度的空闲内存分片数量少于内存块申请阈值,则根据所述至少两个内存块的状态,申请处于空闲状态的内存块进行划分;如果同一长度的空闲内存分片数量大于内存块释放阈值,则释放所述同一长度的空闲内存分片;内存分片管理模块,用于接收到业务请求时,为所述业务请求分配相应长度的空闲内存分片;数据存储模块,用于根据所述内存分片管理模块分配到的空闲内存分片的内存地址,存储所述业务请求对应的数据。2.根据权利要求1所述的装置,其特征在于,所述内存分片监控模块用于:对于任一种长度的内存分片,若在预设时间内没有接收到对所述长度的内存分片的申请,则释放所述长度的内存分片所占用的内存块。3.根据权利要求1所述的装置,其特征在于,所述内存分片监控模块用于对于任一种长度的内存分片,以未使用内存块队列、已耗尽内存块队列以及正使用内存块队列的形式管理所述长度的内存分片所占用的内存块的内存地址;所述未使用内存块队列包括所述长度的内存分片中所有内存分片均空闲的内存块的内存地址;所述已耗尽内存块队列包括所述长度的内存分片中所有内存分片均被占用的内存块的内存地址;所述正使用内存块队列包括所述长度的内存分片中部分内存分片被占用的内存块的内存地址。4.根据权利要求3所述的装置,其特征在于,所述内存分片管理模块,用于接收到业务请求时,从所述业务请求对应长度的空闲内存分片中,优先分配所占用内存块中空闲内存分片数量最少的内存块中的空闲内存分片。5.根据权利要求1所述的装置,其特征在于,所述内存分片监控模块用于对于任一种长度的内存分片,采用多级位图Bitmap查找表的方式维护所述长度的内存分片的占用情况。6.根据权利要求1所述的装置,其特征在于,所述内存块状态监控模块还用于:对于任一种大小的内存块,检测所述大小的内存块中处于占用状态的内存块的比例是否小于第一预设阈值;若所述比例小于所述第一预设阈值,则卸载所述大小的内存块中至少一个处于空闲状态的内存块。7.根据权利要求1所述的装置,其特征在于,所述内存块状态监控模块还用于:对于任一种大小的内存块,检测所述大小的内存块中处于占用状态的内存块的比例是否大于第二预设阈值;若所述比例大于所述第二预设阈值,则从系统内存中加载至少一个处于空闲状态的内存块。8.根据权利要求1所述的装置,其特征在于,所述内存分片管理模块,用于对于任一种长度的内存分片,以双指针后进先出LIFO缓存的形式,缓存预设数量的所述长度的空闲内存分片的内存地址,在接收到业务请求时,从与所述业务请求响应的所述双指针后进先出LIFO缓存中分配空闲内存分片的内存地址。9.根据权利要求8所述的装置,其特征在于,所述内存分片管理模块,用于对于任一种长度的内存分片,检测所述双指针后进先出LIFO缓存中的内存地址数量低于预设阈值;若所述内存地址数量低于所述预设阈值...

【专利技术属性】
技术研发人员:赵庆贺任勇史洪波
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1