数据库系统实现技术之缓冲区管理报告

上传人:wan****21 文档编号:139317011 上传时间:2022-08-22 格式:DOC 页数:5 大小:65.50KB
返回 下载 相关 举报
数据库系统实现技术之缓冲区管理报告_第1页
第1页 / 共5页
数据库系统实现技术之缓冲区管理报告_第2页
第2页 / 共5页
数据库系统实现技术之缓冲区管理报告_第3页
第3页 / 共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)实验分析:在本程序的读写锁控制中,仅在状态量上进行模拟,并未真正实现并发控制机制其次在程序执行时间记录上,稍微小于实际执行时间(在程序结束时类析构过程未予记录)对同一页数据进行读、写不同操作时,若进行写操作则命中计数,若进行读操作前已经被修改,则命中数不计(读共享,需要先写回磁盘并再次读出)若仅考虑单进程情况,则不必考虑读、写不一致性,所得实验结果如下:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!