1 .一种缓冲区管理方法,其特征在于,包括以下步骤:
S1 .启动系统,通过主线程对缓冲区管理器进行初始化;
S2.创建一组控制变量、一个缓冲区维护线程、一个或多个缓冲区写盘线程、一组支撑
函数,并使缓冲区维护线程进入等候状态;
S3 .当等候超时或接收到退出信号时,缓冲区维护线程脱离等候状态,根据缓冲区维护
线程的退出标志进行脏数据处理。
2.根据权利要求1所述的缓冲区管理方法,其特征在于,所述S1步骤包括以下子步骤:
S11 .初始化各个队列的头部、各个计数器、闩锁及信号灯对象;
S12.申请hash表内存并格式化hash表;
S13 .申请buffer头部内存并格式化为若干个buffer结构,并将buffer结构链接到自由
buffer头部链;
S14 .申请数据块内存,将数据块内存划分成一系统数据块,并将系统数据块添加到自
由块链后面。
3.根据权利要求1所述的缓冲区管理方法,其特征在于,所述S3步骤中对于根据缓冲区
维护线程的退出标志进行脏数据处理具体包括:若退出标志为T,则以同步方式将脏块写入
磁盘;若退出标志不为T,则启用异步IO方式进行buffer向磁盘回写。
4 .根据权利要求3所述的缓冲区管理方法,其特征在于,所述若退出标志不为T时具体
包括以下子步骤:
A31 .对各种尺度的自由块个数进行检测,并将检测出的自由块个数同下限比例进行大
小判断,若自由块个数大于下限比例,则进入步骤A32;若自由块个数小于下限比例,则进入
步骤A33;
A32.将脏数据队列中的部分buffer加入到写盘队列中,进入等候状态并以超时方式等
候退出信号,当接收到退出信号时进入步骤S3进行数据处理;
A33 .从LRU队列中选出n个缓冲块,并对选出n个缓冲块进行脏数据判断,若选出的缓冲
块有脏数据,则进入步骤A34;若选出的缓冲块没有脏数据,则直接淘汰buffer,将其加入自
由队列,同时进入步骤A32;
A34 .对缓冲块进行加锁处理并设置写盘后的处理程序指针,将加锁处理后的缓冲块加
入磁盘回写队列,启动异步IO,完成buffer的回写后进入步骤A32。
5.根据权利要求4所述的缓冲区管理方法,其特征在于,所述A34步骤包括以下子步骤:
A341 .采用闩锁对buffer进行加锁处理;
A342.根据buffer的表实体及块号,将加锁处理后的buffer映射到buffer所在的文件
句柄、在文件中的位置;
A343 .将buffer写入磁盘后的后处理程序的指针填入异步IO控制结构的回调函数指针
处,启动异步IO。
6.根据权利要求5所述的缓冲区管理方法,其特征在于,还包括一个步骤:使用磁盘回
写线程来模拟启用异步IO进行buffer回写,其实现过程具体包括以下子步骤:
B1 .当系统不支持异步IO机制或未启用系统提供的异步IO功能时,首先对buffer加上
适当闩锁,设置写盘后处理程序指针,并将加锁后的buffer加入写盘队列中;
B2 .启动磁盘回写线程,对缓冲区维护线程的退出标志进行检测,若退出标志为T,则进
权 利 要 求 书
1/2 页
2
评论