System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种缓冲区管理方法及系统技术方案_技高网

一种缓冲区管理方法及系统技术方案

技术编号:40215863 阅读:4 留言:0更新日期:2024-02-02 22:23
本发明专利技术公开了一种缓冲区管理方法及系统。方法包括以下步骤:S1.启动系统,通过主线程对缓冲区管理器进行初始化;S2.创建一组控制变量、一个缓冲区维护线程、一个或多个缓冲区写盘线程、一组支撑函数,并使缓冲区维护线程进入等候状态;S3.当等候超时或接收到退出信号时,缓冲区维护线程脱离等候状态,根据缓冲区维护线程的退出标志进行脏数据处理。系统包括缓冲区写盘模块、缓冲区维护模块、内存模块、控制模块、支撑函数模块。本发明专利技术支持缓冲区单个或多个维护线程的方式,实现灵活配置,在高并发场景下,提升写实速度,保证了缓冲区的变化与硬盘的数据一致性。

【技术实现步骤摘要】

本专利技术涉及计算机缓冲管理,具体为一种缓冲区管理方法及系统


技术介绍

1、在数据通信网络中,数据流量都非常大,通常将用于临时存放待处理数据的内存区域叫 做数据缓冲区,简称缓冲区。系统协议栈中的各种协议和功能模块, 在进行数据处理之前,通常是把接收到的数据临时存放在其由数据缓冲区组成的缓冲区队列中。这些数据流量在数据交换点(如交换机,路由器等)完成源端口与目的端口之间的互通。在每个数据交换点,必须以迅速且有效的方式将从源端口的数据交换到目的端口。在网络上传递的数据通常都是以固定大小的分组或者有长度限制的数据帧进行传递。通常,分组(或数据帧)从源端口进来之后,都要求被存储在缓冲区中。

2、在现有技术中,缓冲区向硬盘写实方式采用的是单块控制,没有结合物理硬盘的设计,导致磁盘写被放大,无法支撑高并发场景下的性能要求;当缓冲区不足时,现有的触发机制是维护线程被动检测,只有当不足情况真实发生时才能触发,无法支持提前预判空间不足的情况。


技术实现思路

1、为了解决上述问题,本专利技术提供一种缓冲区管理方法,包括以下步骤:s1.启动系统,通过主线程对缓冲区管理器进行初始化;s2.创建一组控制变量、一个缓冲区维护线程、一个或多个缓冲区写盘线程、一组支撑函数,并使缓冲区维护线程进入等候状态;s3.当等候超时或接收到退出信号时,缓冲区维护线程脱离等候状态,根据缓冲区维护线程的退出标志进行脏数据处理。

2、进一步地,所述s1步骤包括以下子步骤:s11.初始化各个队列的头部、各个计数器、闩锁及信号灯对象;s12.申请hash表内存并格式化hash表;s13.申请buffer头部内存并格式化为若干个buffer结构,并将buffer结构链接到自由buffer头部链;s14.申请数据块内存,将数据块内存划分成一系统数据块,并将系统数据块添加到自由块链后面。

3、进一步地,所述s3步骤中对于根据缓冲区维护线程的退出标志进行脏数据处理具体包括:若退出标志为t,则以同步方式将脏块写入磁盘;若退出标志不为t,则启用异步io方式进行buffer向磁盘回写。

4、进一步地,所述若退出标志不为t时具体包括以下子步骤:a31.对各种尺度的自由块个数进行检测,并将检测出的自由块个数同下限比例进行大小判断,若自由块个数大于下限比例,则进入步骤a32;若自由块个数小于下限比例,则进入步骤a33;a32.将脏数据队列中的部分buffer加入到写盘队列中,进入等候状态并以超时方式等候退出信号,当接收到退出信号时进入步骤s3进行数据处理;a33.从lru队列中选出n个缓冲块,并对选出n个缓冲块进行脏数据判断,若选出的缓冲块有脏数据,则进入步骤a34;若选出的缓冲块没有脏数据,则直接淘汰buffer,将其加入自由队列,同时进入步骤a32;a34.对缓冲块进行加锁处理并设置写盘后的处理程序指针,将加锁处理后的缓冲块加入磁盘回写队列,启动异步io,完成buffer的回写后进入步骤a32。

5、进一步地,所述a34步骤包括以下子步骤:a341.采用闩锁对buffer进行加锁处理;a342.根据buffer的表实体及块号,将加锁处理后的buffer映射到buffer所在的文件句柄、在文件中的位置;a343.将buffer写入磁盘后的后处理程序的指针填入异步io控制结构的回调函数指针处,启动异步io。

6、进一步地,还包括一个步骤:使用磁盘回写线程来模拟启用异步io进行buffer回写,其实现过程具体包括以下子步骤:b1.当系统不支持异步io机制或未启用系统提供的异步io功能时,首先对buffer加上适当闩锁,设置写盘后处理程序指针,并将加锁后的buffer加入写盘队列中;b2.启动磁盘回写线程,对缓冲区维护线程的退出标志进行检测,若退出标志为t,则进入步骤b3;若退出标志不为t,则进入步骤b4;b3.对当前磁盘回写线程的序号进行判断,若当前磁盘回写线程为一号磁盘回写线程,则当前磁盘回写线程直接退出运行;若当前磁盘回写线程不是一号磁盘回写线程,则将队列中所有buffer写入磁盘,完成后磁盘回写线程退出运行;b4.在同一表空间下取一组buffer,若未获取到buffer,则当前磁盘回写线程休眠一毫秒,并返回到步骤b2;若获取到buffer,则对获取到的buffer按照块号进行排序,并调用写入命令将排序后的buffer 写入表空间,完成后进入步骤b2。

7、一种缓冲区管理系统,包括缓冲区写盘模块、缓冲区维护模块、内存模块、控制模块、支撑函数模块;所述缓冲区写盘模块用于从写盘队列中取出待写的buffer并进行排序,同时将排序后的buffer写入磁盘;所述缓冲区维护模块用于管理维护各个自由缓冲块的个数,并利用缓冲区请求的空闲时间将脏块回写到磁盘中;所述内存模块用于存储缓冲区内及其需要调用的各项数据;所述控制模块用于为提供缓冲区锁定和解锁功能,以及通过同步io或异步io的方式控制缓冲区写盘模块回写数据;所述支撑函数模块用于支撑缓冲区管理系统管理运行,提供函数供系统调用。

8、进一步地,所述缓冲块在系统内的状态包括:被锁定(未脏)状态、被锁定(已脏)状态、未锁定(有效、已脏)状态、未锁定(数据有效、未脏)状态、处于写盘队列状态、处于buffer状态。

9、进一步地,所述缓冲区维护模块处于间歇式循环状态。

10、本专利技术提供了一种缓冲区管理方法及系统,具有以下有益效果:

11、本专利技术支持缓冲区单个或多个维护线程的方式,实现灵活配置,在高并发场景下,提升写实速度,保证了缓冲区的变化与硬盘的数据一致性;本专利技术对缓冲区进行逻辑编号,通过对缓冲区块排序,让磁盘最大化的进行顺序写,减少磁盘寻道时间,提高写的速度;本专利技术提供的写盘触发机制,能更好的控制缓冲区的写盘时机,实现写盘的实时性,减少等待时间,并且不影响其它操作,提高性能。

本文档来自技高网...

【技术保护点】

1.一种缓冲区管理方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的缓冲区管理方法,其特征在于,所述S1步骤包括以下子步骤:

3.根据权利要求1所述的缓冲区管理方法,其特征在于,所述S3步骤中对于根据缓冲区维护线程的退出标志进行脏数据处理具体包括:若退出标志为T,则以同步方式将脏块写入磁盘;若退出标志不为T,则启用异步IO方式进行buffer向磁盘回写。

4.根据权利要求3所述的缓冲区管理方法,其特征在于,所述若退出标志不为T时具体包括以下子步骤:

5.根据权利要求4所述的缓冲区管理方法,其特征在于,所述A34步骤包括以下子步骤:

6.根据权利要求5所述的缓冲区管理方法,其特征在于,还包括一个步骤:使用磁盘回写线程来模拟启用异步IO进行buffer回写,其实现过程具体包括以下子步骤:

7.一种缓冲区管理系统,用于实现权利要求1-6任一项所述的缓冲区管理方法,其特征在于,包括缓冲区写盘模块、缓冲区维护模块、内存模块、控制模块、支撑函数模块;

8.根据权利要求7所述的缓冲区管理系统,其特征在于,所述缓冲块在系统内的状态包括:被锁定(未脏)状态、被锁定(已脏)状态、未锁定(有效、已脏)状态、未锁定(数据有效、未脏)状态、处于写盘队列状态、处于buffer状态。

9.根据权利要求7所述的缓冲区管理系统,其特征在于,所述缓冲区维护模块处于间歇式循环状态。

...

【技术特征摘要】

1.一种缓冲区管理方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的缓冲区管理方法,其特征在于,所述s1步骤包括以下子步骤:

3.根据权利要求1所述的缓冲区管理方法,其特征在于,所述s3步骤中对于根据缓冲区维护线程的退出标志进行脏数据处理具体包括:若退出标志为t,则以同步方式将脏块写入磁盘;若退出标志不为t,则启用异步io方式进行buffer向磁盘回写。

4.根据权利要求3所述的缓冲区管理方法,其特征在于,所述若退出标志不为t时具体包括以下子步骤:

5.根据权利要求4所述的缓冲区管理方法,其特征在于,所述a34步骤包括以下子步骤:

6.根据权利要求5所述的缓冲...

【专利技术属性】
技术研发人员:王汉瑛苏德财李文彬吴生勇
申请(专利权)人:成都虚谷伟业科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1