一种内存管理方法及系统的制作方法_3

文档序号:8457224阅读:来源:国知局
包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。也即,提取所述内存地址并将其分配给所述网络数据包后,所述内存块便已经被使用,此时需要将其标识为已使用状态。
[0076]在一个实施例中,如图5所示,所述步骤S20还可包括:
[0077]步骤S208、在当前内存分区中所有内存块的总内存容量小于所述网络数据包的内存需求时,检测其他内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求。也即,在当前内存分区中剩余的未使用的内存块的总容量小于所述网络数据包的内存需求时,当前内存分区不满足进行重新分配内存块的条件,只能查询其他内存分区是否满足重新分配内存块并容纳所述网络数据包的条件。
[0078]步骤S209、在其他内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将其他所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块。也即,若其他内存分区已经满足重新分配的需求,则进行重新分配,且分配后起码包含一个与所述网络数据包的内存需求匹配的内存块。可理解的,若其他内存分区均不满足重新分配的需求,此时,无法对所述网络数据包进行分配内存,此时需要警示用户内存不足。
[0079]步骤S210、提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。也即,提取所述内存地址并将其分配给所述网络数据包后,所述内存块便已经被使用,此时需要将其标识为已使用状态。
[0080]在步骤S30中,检测所述内存分区中不同量级的所述内存块的使用率,并根据所述使用率重新调整所述内存分区中的内存块的量级。
[0081]也即,在进行内存管理的过程中,需要实时或者定时检测所述内存分区中不同量级的所述内存块的使用率,以根据所述使用率重新调整所述内存分区中的内存块的量级,也即,若某个量级的内存块使用率最高且该量级的数量已经达到预设阈值,此时,可以重新分配所述内存块,将使用率低且数量充足的其他量级的内存块减少,而增加使用率高且数量少的内存块的数量。
[0082]本发明实施例提供的上述方法,将内存预先划分为多个内存分区,将所述内存分区分别分配为多个不同量级的内存块;接收包含内存需求的网络数据包,并根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址;检测所述内存分区中不同量级的所述内存块的使用率,并根据所述使用率重新调整所述内存分区中的内存块的量级。该方案通过预先分配不同量级的内存块,在网络数据包到来时,只需要直接分配与其内存需求匹配的内存块的内存地址即可,不需要再进行内存的分配,达到了高效合理地分配内存,提高处理效率的目的,且其大大提升了内存利用率和系统性能。
[0083]对应本发明实施例提供的内存管理方法,本发明还提供内存管理系统,如图6所示,该系统可包括:
[0084]内存分配模块61,用于将内存预先划分为多个内存分区,将所述内存分区分别分配为多个不同量级的内存块;
[0085]内存地址分配模块62,用于接收包含内存需求的网络数据包,并根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址;
[0086]量级调整模块63,用于检测所述内存分区中不同量级的所述内存块的使用率,并根据所述使用率重新调整所述内存分区中的内存块的量级。
[0087]在一个实施例中,如图7所不,所述内存分配模块61包括:
[0088]分区子模块611,用于根据需要将内存预先划分为多个相同/不同大小的内存分区;
[0089]第一内存分配子模块612,用于将所述内存分区分别分配为多个不同量级的内存块,并将所述内存块的使用状态标识为未使用;其中,所述内存块的不同量级为128字节或/和512字节或/和1024字节或/和1536字节。
[0090]在一个实施例中,如图8所示,所述内存地址分配模块62包括:
[0091]数据包接收子模块621,用于接收包含内存需求的网络数据包;
[0092]第一检测子模块622,用于检测各内存分区中使用状态为未使用的所述内存块中,是否存在内存容量等于或大于所述网络数据包的内存需求的所述内存块;
[0093]内存地址提取子模块623,用于在各内存分区中存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;
[0094]第一内存地址分配模块624,用于将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0095]在一个实施例中,如图9所示,所述内存地址分配模块62还包括:
[0096]第二检测子模块625,用于在各内存分区中不存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,检测当前内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0097]第二内存分配子模块626,用于在当前内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0098]第二内存地址分配子模块627,用于提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0099]在一个实施例中,如图10所示,所述内存地址分配模块62还包括:
[0100]第三检测子模块628,用于在当前内存分区中所有内存块的总内存容量小于所述网络数据包的内存需求时,检测其他内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0101]第三内存分配子模块629,用于在其他内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将其他所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0102]第三内存地址分配子模块630,用于提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0103]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0104]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1