[发明专利]一种动态内存控制方法及系统在审
| 申请号: | 201510574366.4 | 申请日: | 2015-09-10 | 
| 公开(公告)号: | CN105159615A | 公开(公告)日: | 2015-12-16 | 
| 发明(设计)人: | 李智荣 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 | 
| 主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/02 | 
| 代理公司: | 上海光华专利事务所 31219 | 代理人: | 庞红芳 | 
| 地址: | 201616 *** | 国省代码: | 上海;31 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 动态 内存 控制 方法 系统 | ||
技术领域
本发明涉及操作系统技术领域,特别是涉及操作系统进程的内存管理技术领域,具体为一种动态内存控制方法及系统。
背景技术
Linux操作系统用户进程的内存管理默认使用的是ptmalloc机制。Linux操作系统的ptmalloc内存管理机制有以下特点:Linux系统的用户进程从进程空间的两个区域申请动态内存:brk区域和mmap区域,如图1所示。当用户申请的内存块大小小于mmap分配阀值(默认值为128K)时,操作系统从brk区域给进程分配内存。从brk分配的内存在释放时不会立刻归还操作系统。当用户申请的内存块大小大于或者等于mmap分配阀值(默认值为128K)时,操作系统从mmap区域给进程分配内存。从mmap区域分配的内存效率比较低,因此适合在申请大块内存时使用。从mmap区域分配的内存在释放时立刻归还给操作系统。
ptmalloc内存管理机制存在以下问题:假设用户按顺序(内存块A->内存块B->内存块C)申请三块内存块,内存块大小都小于mmap分配阀值(默认值为128K)。进程在释放内存时如果只释放了内存块A和内存块B,内存块C没有释放。则存在这么一个问题:所释放的内存块A和内存块B只是把内存块A和内存块B放到了进程的可用内存当中,并不会归还给操作系统,这就导致了其他的进程无法使用这两块内存。出现应用进程堆内存释放时无法归还给操作系统的原因主要是频繁申请和释放大小小于mmap分配阀值的内存块,也就是操作系统从brk区域分配了内存块。在一些需要反复申请、释放大量的内存块的业务经常会导致操作系统因为内存耗尽而杀死某些进程,造成业务中断。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种动态内存控制方法及系统,用于解决现有技术中在一些需要反复申请、释放大量的内存块的业务经常会导致操作系统因为内存耗尽而杀死某些进程,造成业务中断的问题。
为实现上述目的及其他相关目的,本发明提供一种动态内存控制方法,用于对Linux操作系统用户进程的内存管理控制过程中,所述动态内存控制方法包括:从进程空间的内存映射区域为用户进程预先分配至少一个不小于所述内存映射区域分配阈值的第一内存块;将所述第一内存块分割成大小相等的至少两个第二内存块;在接收到不大于所述第二内存块的内存的进程内存申请时,将所述第二内存块的内存分配至所述进程内存申请对应的进程;当所述进程释放内存时,将所述进程占用的所述第二内存块的内存归还至所述第二内存块原来所属的第一内存块中;在所述第一内存块中的所有第二内存块均被释放后,将所述第一内存块的内存归还至Linux操作系统。
优选地,若所述第一内存块的数量大于等于两个,各个所述第一内存块的大小不相等。
优选地,若所述第一内存块的数量大于等于两个,各个所述第一内存块的大小相等。
优选地,若所述第一内存块的数量大于等于两个,每一个所述第一内存块中的第二内存块的大小与其他所述第一内存块中的第二内存块的大小均不相等。
优选地,所述第二内存块的大小为4字节、8字节、16字节、32字节、64字节或128字节。
为实现上述目的,本发明还提供一种动态内存控制系统,用于对Linux操作系统用户进程的内存管理控制过程中,所述动态内存控制系统包括:第一内存块分配模块,用于从进程空间的内存映射区域为用户进程预先分配至少一个不小于所述内存映射区域分配阈值的第一内存块;第二内存块分配模块,与所述第一内存块分配模块相连,用于将所述第一内存块分割成大小相等的至少两个第二内存块;进程内存分配模块,与所述第二内存块分配模块相连,用于在接收到不大于所述第二内存块的内存的进程内存申请时,将所述第二内存块的内存分配至所述进程内存申请对应的进程;内存释放控制模块,与所述第二内存块分配模块和所述进程内存分配模块相连,用于当所述进程释放内存时,将所述进程占用的所述第二内存块的内存归还至所述第二内存块原来所属的第一内存块中;内存块归还模块,与所述内存释放控制模块相连,用于在所述第一内存块中的所有第二内存块均被释放后,将所述第一内存块的内存归还至Linux操作系统。
优选地,若所述第一内存块的数量大于等于两个,所述第一内存块分配模块还用于使得各个所述第一内存块的大小不相等。
优选地,若所述第一内存块的数量大于等于两个,所述第一内存块分配模块还用于使得各个所述第一内存块的大小相等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510574366.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:静电粉末涂装遮蔽装置
 - 下一篇:风力永磁选矿机
 





