[发明专利]工业实时数据库采用内存池技术实现动态内存管理的方法有效
申请号: | 201210016647.4 | 申请日: | 2012-01-18 |
公开(公告)号: | CN103218360A | 公开(公告)日: | 2013-07-24 |
发明(设计)人: | 高锐强;陶勇;邓小草 | 申请(专利权)人: | 中国石油天然气集团公司;中国石油天然气管道局;廊坊开发区中油龙慧自动化工程有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F9/50 |
代理公司: | 北京市中实友知识产权代理有限责任公司 11013 | 代理人: | 金杰;任清汉 |
地址: | 100007 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 工业 实时 数据库 采用 内存 技术 实现 动态 管理 方法 | ||
技术领域
本发明是一种工业实时数据库采用内存池技术实现动态内存管理的方法。涉及信息的存储、数据的识别和控制技术领域。
背景技术
工业实时数据库为大型SCADA系统中的核心组件,一般应用于大型控制中心,对容量、吞吐量、并发性和实时性等性能指标有苛刻的要求,例如:北京油气调控中心,预计系统容量超过50万个信号量,每秒处理为10万以上事件,100个左右的客户端并发访问。这样的系统在运行时,涉及频繁的大小不等的内存分配释放的,采用C或C++语言开发,通常是调用C运行库的内存管理函数。这样做带来的问题有:C运行库的内存管理函数是整个进程共用,多线程并发访问对性能有较大影响;进程访问的内存分配释放,在测试中发现,其性能受系统其它运行程序影响较大,在要求实时性比较高的应用中,这种不确定性给性能优化带来一定困难;工业实时数据库通常是运行于后台的服务程序,需要高效的传递复杂数据类型,在网络数据流和内存数据结构之间转化必然涉及内存分配释放,这要求客户端和服务端对内存有统一的处理方式;C运行库要求程序开发人员成对进行分配和释放,给开发人员带来较大负担,很容易造成内存泄露,而且这样的缺陷极不容易发现。
如错误!未找到引用源。为工业实时数据库体系结构,实时存储引擎是一个高速的嵌入式数据管理引擎,存放的所有信息数据,支持整个系统运行。其重要的数据处理流程是,数据采集器把一批(如50个)采集的信号量发送给工业实时数据库,工业实时数据库在内存或磁盘上检索这些信号量的配置信息,根据配置信息处理这些信号量,如报警、计算,处理完成后保存数据,并把数据推送给需要的客户端。
从逻辑上讲,工业实时数据库按“点”(信号量)组织数据,由于采用实时存储引擎存储全局信息,任务之间的数据关联性比较小,调用的上下文关系简单,因此比较容易把工业实时数据库处理逻辑划分为相对独立的“任务”,以这样任务考虑和优化动态内存的管理方法是非常合适的。同样,工业实时数据库还有其它处理任务,如客户端查询,对配置信息的修改,后台的统计分析,都适用于这样的特点。
目前,一般编程方法中使用内存分配和释放不足
CN101799773A公开了一种并行计算的内存访问方法;CN102053872A公开了一种终端交易性能测试方法;US2009/0006502A1公开了一种基于特定应用的堆管理方法。它们都没有公开对每个任务创建一个或多个缓冲池并在完成任务后统一销毁内存池的技术,当然也就没有由此带来的提高服务程序运行效率、简化动态内存变成负担的技术效果。
发明内容
本发明的目的是发明一种能提高工业实时数据库动态内存管理性能、运行效率以及简化动态内存使用方法的工业实时数据库采用内存池技术实现动态内存管理的方法。
在大型工业实时数据库系统中使用内存池技术管理和组织动态内存的方法,通过把工业实时数据库的处理逻辑或业务划分为相对独立任务,每个任务使用一个或多个内存池用于管理该任务中的内存分配,实现内存多次分配,统一释放。
本发明在分析工业实时数据库特点的基础,为了克服采用一般编程方法中使用内存分配和释放的不足,提出采用内存池管理动态内存的方法,可以大大提高服务程序的运行效率,简化开发人员动态内存编程的负担,并且具有一定普遍性。
工业实时数据库体系结构如图1所示,在网络调用及任务调度层实现网络调用,在实时报警、实时计算、订阅发布、数据下行、采集管理层实现业务逻辑处理,在实时数据关系逻辑表示层和实时数据存储管理层实现实时存储引擎。
其方法如下:
1.提出从按“任务”的角度看待工业实时数据库对动态内存的使用过程;通过对工业实时数据库典型应用场景、功能、运行模式等进行分析,合理规划任务以及内存使用情况;
2.对每个任务创建一个或多个内存池,生成内存池句柄作为参数传递给后续处理模块,并根据该任务的功能,预先分配一定的内存大小(缺省4K),以提高使用效率;
3.在任务运行过程中,根据需要使用内存池进行需要分配和释放,对于返回参数或模块之间传递的数据,可以不用释放,直接在内存池中分配并赋值返回给调用方即可;
4.当任务完成后,不需要逐一释放返回参数或传递的数据,统一销毁内存池,在内存池中分配的内存一次性释放。
具体步骤如图2所示:
1)客户端应用创建内存池;
2)发起网络调用,传入内存池句柄;
3)输入参数打包发给远程工业实时数据库,等待应答;此步与等待客户端请求均转下步;
4)接收客户端请求,创建内存池;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油天然气集团公司;中国石油天然气管道局;廊坊开发区中油龙慧自动化工程有限公司,未经中国石油天然气集团公司;中国石油天然气管道局;廊坊开发区中油龙慧自动化工程有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210016647.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种食品安全记录查询系统
- 下一篇:采用数据驱动机制多处理器间数据通信电路