[发明专利]一种IEC 61850带缓冲报告的内存管理方法无效
申请号: | 200810015549.2 | 申请日: | 2008-04-15 |
公开(公告)号: | CN101266572A | 公开(公告)日: | 2008-09-17 |
发明(设计)人: | 韩明峰;李小滨;刘世明;郑永志 | 申请(专利权)人: | 烟台东方电子信息产业股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F12/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 264000山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 iec 61850 缓冲 报告 内存 管理 方法 | ||
技术领域
本发明涉及一种IEC 61850带缓冲报告的内存管理方法,属电力系统自动化领域。
背景技术
IEC 61850是数字化变电站的系统通信标准,带缓冲报告是IEC61850提供的一种重要服务模型。根据IEC 61850标准,带缓冲报告控制块生成的报告应进行缓冲,以支持客户端通过对应的服务让服务器端进行报告重传。在装置里对带缓冲的报告进行有效的管理,对系统的功能、安全和效率都有很大的影响。目前对带缓冲报告的内存管理主要有以下几种方式:
(1)采用一定数量的固定长缓冲区,每个缓冲区的大小以能容下系统使用的最大长度的报告为上限。这种方式虽然不会产生内存碎片,但其内存的浪费是很大的。根据IEC 61850标准,带缓冲报告控制块生成的报告其长度变化范围很大,从包括全体数据集成员的总召和周期报告,到某个数据集成员发生变化,这么大的动态范围不适合采用固定长缓冲区。
(2)采用内存分片的方法。确定内存分片的基本尺寸,分配一定数量的内存分片,一个报文有可能在一个分片中就能放下,也可能需要多个内存分片才能放下。这种方法存在效率低的缺点,需要考虑对一个报文进行分片存储以及发送前对一个报文进行拼装,比较麻烦。需要指出的是这种方法的内存分片是指内存管理范畴的,不同于报文过长超过客户端和服务器端之间的协商值这种情况。
(3)采用多尺寸固定长缓冲区的方法。缓冲区分为多个不同的尺寸,每个尺寸都有一定数量的缓冲区组成一个池,先根据报文的长度确定一个合适尺寸的缓冲区池,然后从该缓冲区池中分配一个缓冲区。这种方法一定程度上能减少内存的浪费,但是当已缓存的报告超过了系统预定的容量时,需要释放最先缓存的报告,而此时释放的缓冲区其尺寸未必就是现在需要的,需要继续释放缓冲区,因此这种方法很难取得实际效果。
(4)采用变长缓冲区的方法。这种方法使用系统的内存池,虽然内存的利用率高,但是极易产生内存碎片。
这些方法在清理已缓冲的报告时,需要依次释放缓冲区,在有大量缓冲报告的情况下,耗时比较明显。因此,需要根据IEC 61850带缓冲报告模型的特点提出一种新的缓存报告的方法。
发明内容
本发明所要解决的技术问题是,提供一种IEC 61850带缓冲报告的内存管理方法,在缓存带缓冲报告控制块生成的报告时,内存的管理既不浪费内存,也不会产生内存碎片;当已缓存的报告超过了系统预设的最大容量时,能够有效地通过释放缓冲区中最先进入的报告来获得空间从而缓存最新的报告;当客户端要求清理已缓存的报告时,能够迅速完成,避免大量的内存释放等内存管理工作。
为了解决上述问题,本发明采用了以下技术方案。
一种IEC 61850带缓冲报告的内存管理方法,其特征是:
首先,根据系统配置参数分配一块用于存放报告的缓冲区,其大小要至少放下一个系统允许的最大报告长度;
当生成报告进行缓存时,从空闲缓冲区的低地址开始连续分配内存,如果空间不足,循环以下两个过程,直至内存空间满足当前的报告大小:
(1)如果空闲空间不是位于缓冲区的尾部,此时,被释放的缓冲区和空闲空间缓冲区是相邻的,释放缓冲区中最先进入的报告,用以增大空闲空间的大小;如果空闲空间不足并且空闲空间不是位于缓冲区的尾部,循环释放缓冲区中最先进入的报告;
(2)如果空闲空间位于缓冲区的尾部,这部分空间合并到当前最新的报告中,以后该报告变成最先进入缓冲区的报告需要释放时,这部分内存空间又成为空闲空间从而可以再利用,合并后空闲缓冲区大小为0,继续从(1)循环执行;
经过上述两个过程的处理,空闲空间的大小能满足要缓存报告的大小。
当客户端要求清理报告缓冲区时,将已发送报告链表头指针及其报告计数、未发送报告链表头指针及其报告计数清空,重置空闲缓冲区大小为预设最大值,重置空闲缓冲区指针为缓冲区起始位置。
本发明的积极效果在于:报告的控制部分含有该报告的总长度数据成员,与报告数据区长度数据成员相区别。本发明的方法有一个重要的特点,即空闲缓冲区只有一块,这就从根本上杜绝了内存碎片的发生。另外,每个报告在缓冲区中都是连续存放的,内存利用率高。空闲缓冲区的合并是唯一暂时没有利用的内存,但是以后能够变为可用。当客户端要求清理报告缓冲区时,只是一些变量的重新初始化,并不牵扯到已有报告的内存释放。
附图说明
图1是本发明寻找空闲缓冲区的流程图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烟台东方电子信息产业股份有限公司,未经烟台东方电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810015549.2/2.html,转载请声明来源钻瓜专利网。