[发明专利]一种多进程系统中的内存管理方法及装置有效
申请号: | 201310338075.6 | 申请日: | 2013-08-05 |
公开(公告)号: | CN103425592A | 公开(公告)日: | 2013-12-04 |
发明(设计)人: | 杨焕军;王雪平 | 申请(专利权)人: | 大唐移动通信设备有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/44 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 朱佳 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 系统 中的 内存 管理 方法 装置 | ||
技术领域
本发明涉及内存管理技术,特别涉及一种多进程系统中的内存管理方法及装置。
背景技术
在操作系统中,当运行软件产品时,通常会涉及对内存的操作。早期的操作系统中,由软件模块直接对操作系统进行内存的申请和释放,这样长期运行会在操作系统内产生内存碎片从而导致后续申请内存失败。为了避免这种情况,添加了内存管理模块,内存管理模块在操作系统之上封装一层内存管理,内存管理模块初始化时根据配置的内存块规格、内存块数量从操作系统申请内存创建内存池(即内存块的管理集合)。软件模块申请内存时直接从内存池申请,软件模块释放内存时将内存释放到内存池。
采用内存池方式,是通过预先配置一定数目的内存块,并对这些内存块进行管理,解决了频繁向系统申请、释放内存的问题。具体实现方式如下。
参阅图1所示,图1中介绍的是通用的内存管理模式,每个单板部署多个进程,每个进程部署一个内存管理模块,每一个内存管理模块均会针对自身管理的进程建立相应的内存池。
参阅图2所示,以任意一个内存管理模块为例,内存管理模块根据配置的内存块的规格以及内存块的数量从操作系统申请内存,创建内存空间形成内存池,每种内存块在内存池中的结构如图2所示,其实现方式如下:
如图2所示,每个内存块分为管理区,内存区(即buffer区)和隔离区,其中,内存区为有效的内存存放空间。内存管理模块可以通过空闲链表和忙链表对内存块进行管理,例如,内存管理模块在初始化时将内存块插入空闲链表中,应用模块申请内存时,将分配的内存块从空闲链表中删除,插入忙链表中;相应的,当应用模块释放内存时,将释放的内存块从忙链表中删除,并插入空闲链表中。
然而,现有技术下,采用上述方式进行内存管理却会存在以下问题:
(1)每一个内存管理模块均会根据初始配置的内存块的规格和内存块的数量创建相应的内存池,但是,由于系统整体内存有限,因此,在每一个内存池中,内存块的规格不能穷举,那么,在某一个内存池中,如果没有配置某个内存块的规格,那么软件模块在申请内存时会申请失败。
(2)由于系统内存是在多个内存池之间分配,因此,每一个内存池中分配到的内存块的规格和数量均有限,而当内存池中的内存块数量不足时,还需要继续从操作系统中申请内存,而从操作系统中申请内存还需调用相应的函数,此过程更为复杂和费时。
(3)软件模块在内存块使用完成后会将内存块释放,释放后的内存块存在于内存池中并不会释放到操作系统中。这样,若某一软件模块申请了很多内存块,并在使用完成后将这些内存块均释放到自身的内存池中,那么,会令操作系统可使用的内存变少,从而令其他进程无内存块可使用,进而造成各进程之间忙闲不均的问题。
(4)对于支持多进程的操作系统(如Linux,Unix等等),每个进程都有一套内存管理机制,即每个进程均对应一个内存管理模块,每一个内存管理针对自身管理的进程分别建立和维护相应的内存池;而每个进程的功能不同,每个进程使用内存块的规格、内存块的数量不尽相同,各个内存管理模块需要针对相应进程分别在对应的内存池中配置内存块,这一过程非常繁琐,需要分别考虑每一个进程需要使用哪种规格的内存块,并分别进行申请,还需要考虑配置的内存总量不能超过系统总的物理内存。
(5)某一个进程申请的内存块被释放后,如果释放的内存块在这个进程的空闲链表中长期不使用,那么,其他进程便无法使用此内存块,这将会造成空闲内存块的浪费。
(6)某一个进程出现故障并重启后,如果按照内存配置信息申请内存块,可能存在其他进程申请内存块过多从而导致本进程申请内存块失败的情况。
发明内容
本发明实施例提供一种多进程系统中的内存管理方法及装置,用以优化系统内的内存管理方式,提高内存利用率以及提高内存分配成功率。
本发明实施例提供的具体技术方案如下:
一种多进程系统中的内存管理方法,包括:
在初始配置阶段,创建共享内存池,并按照预设的内存配置信息在所述共享内存池中进行内存块规划;
接收到内存调用指令时,选取一进程,并通过所述一进程在所述共享内存池中申请符合内存调用指令的相应规格的内存块,以及对应所述相应规格的内存块记录所述一进程的标识信息和互斥信号量,其中,所述互斥信号量用于表示某一规格的内存块当前已被占用且不能再被其他进程申请。
优选的,创建共享内存池,并按照预设的内存配置信息在所述共享内存池中进行内存块规划,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐移动通信设备有限公司,未经大唐移动通信设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310338075.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:离体眼球固定器
- 下一篇:具有温度报警功能的冷却液可循环医用冰枕