[发明专利]一种可动态调整的环形缓冲区有效
申请号: | 202010061058.2 | 申请日: | 2020-01-19 |
公开(公告)号: | CN111290709B | 公开(公告)日: | 2022-12-06 |
发明(设计)人: | 李驹光;唐东明;刘湛 | 申请(专利权)人: | 成都中嵌自动化工程有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 夏琴 |
地址: | 610041 四川省成都市高新区*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 调整 环形 缓冲区 | ||
本发明提供了一种可动态调整的环形缓冲区,包括:固定长度的环形缓冲区,以及当环形缓冲区写满时根据待写入数据个数动态建立的多个数据缓冲单元,所述数据缓冲单元之间采用链表的形式进行链接,链表头指向最先建立的数据缓冲单元。采用本发明的技术方案动态开辟数据缓冲区,应用上灵活可行,动态建立的数据缓冲区在使用完毕后由系统完成释放操作,不会无效占用系统内存。
技术领域
本发明涉及数据处理领域,特别涉及一种可动态调整的环形缓冲区。
背景技术
环形缓冲区的存储空间在逻辑上首位相连,在物理存储上是一维的长度固定的连续线性结构,如图1所示,在应用中,环形缓冲区的大小通常固定不变,定义读取指针和读写指针来分别指向当前可读和可写数据的位置;初始状态下,读写指针指向同一个位置,当前环形缓冲区中存储的数据个数N为0;当写入一个数据,N+1,写指针移动到下一个可写的位置;当读出一个数据,N-1,读指针移到下一个可读的位置;当写入数据的个数达到缓冲区最大容量时,表示环形缓冲区被写满,读指针和写指针指向同一个位置。缓冲区被写满后,如果还需要写入数据,则存在两种可能的操作:第一种是不执行写入操作,直接返回;第二种是覆盖写入,覆盖掉尚未读取的数据。
由此可见,当数据写入和读出的速度匹配时,环形缓冲区的工作效率很高,可以大大提高系统处理数据的并发能力;但当出现数据写入速度大于读出速度继而导致缓冲区被写满的情况发生时,系统必然会产生数据丢失(如果不执行写入操作直接返回,则当前待写入的数据可能会被后续的待写入数据覆盖;如果覆盖写入则当前尚未读取的数据会被待写入的数据覆盖),对于一些数据敏感的系统,不允许丢失任何一组数据,这时传统的环形缓冲区的读写处理方式显然就无法满足要求。
为避免数据丢失,在环形缓冲区初始大小固定的情况下,普遍的解决办法有两种:
第一种是直接建立一个更大的环形缓冲区,把当前环形缓冲区里的内容完全拷贝过去,如图2所示,原有环形缓冲区长度为4,新建了一个更大的长度为8,把原来的D0-D3的数据全部拷贝到新的更大的缓冲区中,D4-D8为可新增数据。这种方法的缺陷在于:新增缓冲区的大小必须确定,无法动态改变;存在数据拷贝的开销,如果数量巨大可能影响系统性能;原缓冲区没有释放,无效占用系统内存资源。
第二种是在原环形缓冲区上扩充单元,如图3所示,原有环形缓冲区长度为4,扩充新的4个单元加入进来,整个的环形缓冲区的长度变成8个。这种方法的缺陷在于:新增缓冲区的大小必须确定,无法动态改变;读写指针的移动变得复杂,可读和可写的位置跟缓冲区的扩充点密切相关。
现有的方法都因为待写入的数据量大小并不确定,导致无法确定新建的缓冲区的大小,方法的灵活性很差;另外,因为当前的缓冲区是静态建立的,当不操作时无法在系统内存中释放掉会导致内存空间被无效占用。
发明内容
针对上述存在的问题,提供了一种可动态调整的环形缓冲区,该环形缓冲区能动态开辟新的数据缓冲区以保证数据完整。
本发明采用的技术方案如下:一种可动态调整的环形缓冲区,包括:固定长度的环形缓冲区,其特征在于,还包括当环形缓冲区写满时根据待写入数据个数动态建立的多个数据缓冲单元,所述数据缓冲单元之间采用链表的形式进行链接,链表头指向最先建立的数据缓冲单元。
进一步的,数据缓冲单元根据每个待写入数据量的大小动态开辟。
进一步的,所述多个数据缓冲区根据建立时间进行排序,再通过链表进行链接。
进一步的,当环形缓冲区满无法再写入数据时,将待写入数据写入到数据缓冲单元中。
进一步的,当环形缓冲区中的数据被读出后,将链表头指向的数据缓冲单元中的数据拷贝到环形缓冲区中,释放该数据缓冲单元,并将链表头指向下一个数据缓冲单元。
与现有技术相比,采用上述技术方案的有益效果为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都中嵌自动化工程有限公司,未经成都中嵌自动化工程有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010061058.2/2.html,转载请声明来源钻瓜专利网。