buffermanager 概要设计说明书 - 中国人民大学.pdfVIP

buffermanager 概要设计说明书 - 中国人民大学.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
buffermanager 概要设计说明书 - 中国人民大学

BufferManager 概要设计说明书 负责人:罗道锋 编写人:罗道锋 系统版本号:OrientX Version 1.5 完成时间:2003/12/16 开发单位:中国人民大学 IDKE 实验室 XML 工作组 1.引言 本说明书详细说明了OrientX1.5 中BufferManager 的设计和实现。 2 .概述 BufferManager管理数据库的缓冲区。任何物理块都将被读到缓冲区进行读写,如果缓 冲区已满,则采用LCR算法淘汰旧的缓冲区。 任何缓冲区块被请求读写时,该物理块的用户数加1;而该缓冲区被释放时,用户数减1。 用户数为0 的缓冲区叫做空闲缓冲区,该缓冲区可以被其它物理块占用(如果该缓冲区被改 写过,需要先刷出到磁盘);反之,如果缓冲区的用户数大于0,则该缓冲区不能被其它物理 块占用。所以,在读写操作完成后,请释放缓冲区,以免造成缓冲区长期占用得不到释放。 3 .总体设计 BufferManager 对外提供的接口是 Buffer 类。提供的接口包括申请/释放缓冲区,读/写缓 冲区,刷出缓冲区等。Buffer 类含两个内部类:BufferCtrl 和 IOCtrl 。其中,BufferCtrl 类负 责用 LCR 算法管理缓冲区的申请和释放;IOCtrl 类负责物理块 IO 读写。两个内部类对外都 是隐藏的,用户只需要用到 Buffer 类提供的接口。 OrientX 中的物理块是定长的物理块,由参数NX_FREEPAGE_CAPACITY 决定。所以, 缓 冲 区 也 是 定 长 的 , 缓 冲 区 的 定 义 是 static unsigned char bufPool[BufPoolSize][NX_FREEPAGE_CAPACITY] 。其中,BufPoolSize 定义了缓冲区的个 数。 4 .接口设计 Buffer类提供了六个接口,定义如下: Buffer类接口设计 函数定义 说明 short GetPage2Buf(int setID, int lpno,UserModes 把物理块读进缓冲区,返回缓冲区号 userMode); short FreeBuf(short bufNo); 释放缓冲区 short GetNewBuf (int setID, int lpNo,UserModes 为一个新的物理块分配一个缓冲区,由于 userMode); 该物理块没有内容,所以不用进行IO读写 short ReadBuf(short bufNo, short offset, short len, 读取缓冲区 void *local); short WriteBuf(short bufNo, short offset, short len, 写缓冲区 void *local); short FlushBuf(short bufNo); 把缓冲区强制刷出到磁盘 5 .数据结构设计 5 .1 逻辑结构设计 5.1.1 BufferCtrl 类 BufferCtrl 类负责缓冲区的管理,包括缓冲区的申请/释放等。为了管理缓冲区,系统定 义了一个缓冲区控制块 BufCtrlBlk 的结构体: struct BufCtrlBlk { int setID; //memory page belonging to dataSet ID int lpNo; //logical page no short useCount; // user count BufferStates bufSt; // buffer page status: 0: IOFree/ 1: Inputting/ 2: Outputting UserModes userMode; //user status : 0--read only, 1--read and write UpdateLabels ifUpdate; // modify sign

文档评论(0)

wujianz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档