[发明专利]一种缓冲区管理方法及系统有效
| 申请号: | 200910087063.4 | 申请日: | 2009-06-17 |
| 公开(公告)号: | CN101923517A | 公开(公告)日: | 2010-12-22 |
| 发明(设计)人: | 娄本刚;吴春华 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F12/08 | 分类号: | G06F12/08 |
| 代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 程立民;张颖玲 |
| 地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 缓冲区 管理 方法 系统 | ||
技术领域
本发明涉及通信、电子领域中的缓冲区管理系统,尤其涉及一种具有老化功能的可以防止缓冲区泄漏的缓冲区管理方法及系统。
背景技术
通信和计算机领域中,经常需要用一大块快速读写存储器(memory)用来暂存接收到的数据、等待处理的数据、以及等待发送出去的数据。这一大块存储器在逻辑上被分割为很多小块。这些小块被称为缓冲区(buffer)。对这些缓冲区进行有效地管理及具体实现的实体,称为缓冲区管理器(buffer manager)。缓冲区管理器完成的主要功能有:外部有缓冲区申请请求时,根据分配策略进行答复,分配具体的缓冲区或者拒绝分配缓冲区;外部有缓冲区释放请求时,响应释放请求,将待释放的缓冲区列入空闲缓冲区池供以后分配使用。
比较通用的缓冲区管理器有堆栈式(stack)管理器和先进先出式(First In FirstOut,FIFO)管理器。和本发明相关的是堆栈式缓冲区管理器。
堆栈式缓冲区管理器的实现如附图1所示。包括控制逻辑实体101、堆栈指针102、空闲缓冲区堆栈103三个部分。索引图105是为了表示方便,物理上并不存在;大容量存储器104是缓冲区管理器所要管理的对象,将这一块存储器分成n个小块缓冲区,每个缓冲区用一个索引(index)来寻址,索引和缓冲区一一对应。空闲缓冲区堆栈中保存的是空闲缓冲区的索引,初始状态下,堆栈是满的,所有的索引都在堆栈中,堆栈指针指向堆栈地址addr0。工作原理为:若外部有向控制逻辑实体申请缓冲区的请求,如果允许分配缓冲区,则控制逻辑实体将堆栈指针指向的索引分配给申请源,同时将堆栈指针下移一步(出栈操作,POP);如果外部请求控制逻辑实体释放缓冲区,则控制逻辑实体将堆栈指针上移一步,并将需要释放的缓冲区索引写入堆栈(入栈操作,PUSH)。经过多次的出栈、入栈操作后,堆栈中的索引排列是无序的,例如图2中空闲缓冲区堆栈所示,这是正常现象。缓冲区管理器和缓冲区使用者的交互信号有:缓冲区使用者分配缓冲区请求信号、缓冲区管理器分配应答信号、分配给缓冲区使用者的缓冲区索引、缓冲区使用者请求释放缓冲区请求信号、缓冲区使用者请求释放的缓冲区索引、缓冲区管理器释放应答信号。
现有的堆栈式缓冲区管理器,分配缓冲区时直接执行出栈操作,释放缓冲区时执行入栈操作。外部缓冲区使用模块必须维护自己使用的缓冲区索引。如果外部缓冲区使用模块维护缓冲区索引出错,申请释放缓冲区时,给出了错误的缓冲区索引,或者对同一缓冲区索引连续释放多次,就会引起空闲缓冲区堆栈内的索引混乱。如附图3所示:假设堆栈指针原本指向addr3,addr3中存放的索引是index3(图3中303);这时候如果有外部请求释放一个索引为index3的缓冲区,执行入栈操作,索引index3会被再次写入堆栈,堆栈指针指向addr2(图3中304)。而根据上文所述,堆栈中的索引表示空闲缓冲区,堆栈中存在重复的索引,当有外部模块申请分配缓冲区时,缓冲区管理器就有可能把相同的一块缓冲区index3同时分配给不同的外部模块使用,造成冲突。这样的后果是很严重的,如果用在数据通信中,轻则会有丢包现象,重则数据转发完全混乱,业务中断。而缓冲区管理器无法检测到这种情况的发生,也无法从这种混乱状态中恢复正常。
为了解决缓冲区堆栈内的索引出现混乱,在缓冲区管理器中引入了缓冲区信息记录器,在分配缓冲区的时候向缓冲区信息记录器写入该缓冲区已经被分配的标识,在释放缓冲区的时候,首先通过读取缓冲区信息记录器中的缓冲区分配标识判断该缓冲区是否已经被分配出去,只释放已经被分配出去的缓冲区,对于申请释放未分配的缓冲区的操作不执行缓冲区索引压入空闲缓冲区堆栈的操作,有效的避免了空闲缓冲区堆栈内的索引出现混乱情况的发生。但是,通过增加缓冲区信息记录器,只能保证空闲缓冲区堆栈内的索引不会混乱。当外部缓冲区使用模块维护缓冲区索引出现错误时,已经被分配的缓冲区就不能被释放,就会导致缓冲区泄漏情况发生。
发明内容
有鉴于此,本发明的主要目的在于提供一种缓冲区管理方法,用于解决缓冲区泄露的技术问题,为达到上述目的,本发明的技术方案是这样实现的:
一种缓冲区管理方法,其特征在于,
A、根据用户请求分配缓冲区的请求为用户分配缓冲区,并记录缓冲区分配的时间;
B、在缓冲区老化定时时间到时,依据所述缓冲区分配的时间逐一判断已分配的缓冲区是否达到老化要求,若是则回收该缓冲区;
C、根据用户请求释放缓冲区的请求,释放标识为已被分配的缓冲区。
进一步地,步骤A具体为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910087063.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:低烟无卤热塑性弹性体阻燃耐火线缆料及生产方法
- 下一篇:回转窑炉衬修补料





