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

文档序号:8457224阅读:364来源:国知局
一种内存管理方法及系统的制作方法
【技术领域】
[0001]本发明涉及互联网技术领域,特别涉及一种内存管理方法及系统。
【背景技术】
[0002]随着互联网技术的发展,计算机领域内的数据量及数据处理需求不断提升,且负载对于系统性能的要求越来越高。从实时性的角度来讲,要求内存分配的过程要尽可能地快,但是在数据量大的情况下,内存分配的效率必然会受到影响;同时,因为内存是一种有限的资源,且由于系统硬件环境空间有限,内存分配还要求高效,因此在内存分配的过程中需要尽量减少浪费;因此,业界急需提出一种高效且处理效率高的内存管理办法,使其可以有效实现上述要求。

【发明内容】

[0003]本发明提供一种内存管理方法及系统,用以高效合理地分配内存,提高了处理效率,提升了内存利用率和系统性能。
[0004]根据本发明实施例的第一方面,提供一种内存管理方法,包括:
[0005]将内存预先划分为多个内存分区,将所述内存分区分别分配为多个不同量级的内存块;
[0006]接收包含内存需求的网络数据包,并根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址;
[0007]检测所述内存分区中不同量级的所述内存块的使用率,并根据所述使用率重新调整所述内存分区中的内存块的量级。
[0008]在一个实施例中,所述将内存预先划分为多个内存分区,并将各所述内存分区分别分配为多个不同量级的内存块,包括:
[0009]根据需要将内存预先划分为多个相同/不同大小的内存分区;
[0010]将所述内存分区分别分配为多个不同量级的内存块,并将所述内存块的使用状态标识为未使用;其中,所述内存块的不同量级为128字节或/和512字节或/和1024字节或/和1536字节。
[0011]在一个实施例中,所述接收包含内存需求的网络数据包,并根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址,包括:
[0012]接收包含内存需求的网络数据包;
[0013]检测各内存分区中使用状态为未使用的所述内存块中,是否存在内存容量等于或大于所述网络数据包的内存需求的所述内存块;
[0014]在各内存分区中存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;
[0015]将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0016]在一个实施例中,所述根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址,还包括:
[0017]在各内存分区中不存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,检测当前内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0018]在当前内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0019]提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0020]在一个实施例中,所述根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址,还包括:
[0021 ] 在当前内存分区中所有内存块的总内存容量小于所述网络数据包的内存需求时,检测其他内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0022]在其他内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将其他所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0023]提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0024]根据本发明实施例的第二方面,还提供一种内存管理系统,包括:
[0025]内存分配模块,用于将内存预先划分为多个内存分区,将所述内存分区分别分配为多个不同量级的内存块;
[0026]内存地址分配模块,用于接收包含内存需求的网络数据包,并根据所述网络数据包中包含的内存需求的大小为所述网络数据包分配所述内存块的内存地址;
[0027]量级调整模块,用于检测所述内存分区中不同量级的所述内存块的使用率,并根据所述使用率重新调整所述内存分区中的内存块的量级。
[0028]在一个实施例中,所述内存分配模块包括:
[0029]分区子模块,用于根据需要将内存预先划分为多个相同/不同大小的内存分区;
[0030]第一内存分配子模块,用于将所述内存分区分别分配为多个不同量级的内存块,并将所述内存块的使用状态标识为未使用;其中,所述内存块的不同量级为128字节或/和512字节或/和1024字节或/和1536字节。
[0031]在一个实施例中,所述内存地址分配模块包括:
[0032]数据包接收子模块,用于接收包含内存需求的网络数据包;
[0033]第一检测子模块,用于检测各内存分区中使用状态为未使用的所述内存块中,是否存在内存容量等于或大于所述网络数据包的内存需求的所述内存块;
[0034]内存地址提取子模块,用于在各内存分区中存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;
[0035]第一内存地址分配模块,用于将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0036]在一个实施例中,所述内存地址分配模块还包括:
[0037]第二检测子模块,用于在各内存分区中不存在内存容量等于或大于所述网络数据包的内存需求的所述内存块时,检测当前内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0038]第二内存分配子模块,用于在当前内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0039]第二内存地址分配子模块,用于提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0040]在一个实施例中,所述内存地址分配模块还包括:
[0041]第三检测子模块,用于在当前内存分区中所有内存块的总内存容量小于所述网络数据包的内存需求时,检测其他内存分区中使用状态为未使用的所有内存块的总内存容量是否等于或大于所述网络数据包的内存需求;
[0042]第三内存分配子模块,用于在其他内存分区中所有内存块的总内存容量等于或大于所述网络数据包的内存需求时,将其他所述内存分区的未使用内存块重新分配为不同量级的内存块,且重新分配后的所述内存块中至少包含一个所属量级的内存容量与所述网络数据包的内存需求之间差值最小的内存块;
[0043]第三内存地址分配子模块,用于提取内存容量与所述网络数据包的内存需求之间差值最小的所述内存块的内存地址;将提取的所述内存地址分配给所述网络数据包后,将提取内存地址的所述内存块的使用状态标识为已使用。
[0044]本发明实施例提供的技术方案
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1