数据库系统实现技术之缓冲区管理报告.doc_第1页
数据库系统实现技术之缓冲区管理报告.doc_第2页
数据库系统实现技术之缓冲区管理报告.doc_第3页
数据库系统实现技术之缓冲区管理报告.doc_第4页
数据库系统实现技术之缓冲区管理报告.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Storage and Buffer Manager(1)实验要求:实现数据存储与缓冲区管理,并模拟LRU页面置换算法,记录I/O次数、命中次数。(2)实验环境: 操作系统 win7 ultimate 64bit SP1 编译环境:Microsoft visual studio 2010 professional 程序语言: C+ 数据文件存放:E:data-5w-50w-zipf.txt,生成的数据文档data.dbf在E:盘根目录下。(3)实验设计: BCB链表: next next next nnextnext Hash链表:Hash链表与LRU链表:(黄色部分为哈希链)prelinkBCBnextNextprelinkBCBnextnextprelinkBCBnextnextLRU链表:pre link BCB next nextpre link BCB next nextPre link BCB next nextpre link BCB next nextLRUList 指向最新节点 (4)结构实现:typedef struct buffer_LRUNode *buffer_LRUList;struct BCB/Buffer Control Blocks 定义说明BCB();void BCB_set();int page_id; /记录相应的页号int frame_id; /记录缓冲区的块号int R_count; /文件被读操作使用计数int W_count;/文件被写操作使用计数int dirty;/文件读写标识符BCB *next;buffer_LRUNode *link; /指向LRU链表的对应位置;struct buffer_LRUNode buffer_LRUNode();void LRU_Set();BCB *pBCB;buffer_LRUNode *next;buffer_LRUNode *pre;(5)算法实现:BCB链表采用链式结构存储,于BMgr初始化,即调用构造函数BMgr()时分配1024个缓存块,组成BCB缓存链表当有读写访问请求时,首先通过Hash链表检查是否在缓冲区。若不在缓冲区中,则从BCB链表中申请一个BCB块,当缓冲区已满(BCB链表空)则执行LRU换入换出算法,否则直接分配一个BCB块,放入相应的hash链表与LRU链表,保证LRU链表保持旧到新的顺序排放且LRU指针始终指向最新实用结点;若在缓冲区中,则依据当前状态位与操作类型进行相应操作并修改LRU链表,使其保持原有时序关系。当文件需要读入读出磁盘时,I/O次数加1;当与读写文件恰好在缓冲区且满足读写条件时,Hit(命中)次数加1.执行换入换出时,依据dirty位判断是否需要写回磁盘,同时从hash链表与LRU链表中移除相应块并存放在BCB链表中,以供后续使用。(5)执行结果:(6)实验分析:在本程序的读写锁控制中,仅在状态量上进行模拟,并未真正实现并发控制机制其次在程序执行时间记录上,稍微小于实际执行时间(在程序结束时类析构过程未予记录)对同一页数据进行读、写不同操作时,若进行写操作则命中计数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论