问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

CMU15445 (Spring 2023) Project #1 - Buffer Pool

发布网友 发布时间:2024-10-07 18:08

我来回答

1个回答

热心网友 时间:2024-12-04 04:14

2023-05-04 五四青年节hh


近期专注于算法学习,今日抽空完成 Project1 的第一部分,即 LRU-K 置换策略。虽然整体并不复杂,但在执行过程中仍遇到了一些挑战,颇感费解。


2023-05-06 全部完成,但遇到一个难以解决的 bug,耗费了一整天的时间。导致最后一个测试无法通过,原因在于写回页面与 pincount 协调不当。因此,最后两部分的正确性无法保证。面试在即,为避免影响备考,暂且搁置后续工作,待有空闲时再进行调试。


2023-05-12 华为笔试通过、综合测评完成,希望结果能满意。今日成功定位 bug。


2023-07-21 补充 task2 部分答案



你可能需要知道的


论文无需阅读,LeetCode 提供相关练习。

三个 Task


Task #1 - LRU-K 替换策略

关键在于理解题意与临界情况的应对。LRU-K 用于记录、更新与删除页面,其历史链表长度代表页面出现次数。当历史链表长度小于等于 K 时,表示最多记录最后 K 次出现。若超过 K 次,则删除链表头部,并将新时间戳加入尾部。历史链表应由小到大排列时间戳。


K-Distance 计算方法:若页面出现次数小于 K,则 K-Distance 无穷大;若出现次数大于等于 K,则 K-Distance 对应历史链表头部的时间戳。


相比 LRU,LRU-K 能更有效地抵抗数据洪流,通过统计出现次数,避免低效。


驱逐策略:优先驱逐 K-Distance 无穷大的页面;若无,考虑 K-Distance 有限的页面,驱逐 K-Distance 最小者。若多个页面 K-Distance 均为无穷大,采用 FIFO(先进先出)策略进行驱逐。


官方文档建议:多个 K-Distance 无穷大的页面,采用 FIFO 进行驱逐,但在代码实现中使用 LRU。实际测试表明,应用 FIFO 进行驱逐更合适。



性能与实现

预期插入、删除等操作快速,但 LRU-K 的复杂度不如 LRU。网上做法使用两个链表维护页面,时间复杂度为 [公式]。我的实现使用链表与红黑树,实现 [公式] 的插入与删除。对 set 的更新,最初尝试通过取地址更新,但发现 set 的排序不随更新变化,更正为删除后更新与插入。


小根堆时间复杂度为 [公式],但遍历次数大于等于 K 的页面不适用于小根堆。


实现细节:课程未公开代码,提供数据结构帮助理解。推荐使用 std::list 而非 std::list。使用 frame_id_t 时避免使用红黑树,以免涉及权限问题。使用 std::scoped_lock 或 std::lock_guard 保证线程安全。



Task #2 - 缓存管理器

缓存管理器实质为数据库内存部分,其结构与实现相对简单。注意 pages_ 维护页面,使用 frame_id 作为索引。理解 pin_count 表示页面使用者数量,为 0 时可驱逐页面。is_dirty 标记页面是否已修改,需要考虑何时更新。在 unpinpage 时,不修改脏位状态。确保完成 pin_count、is_dirty 的更新与页面写入至 replacer_。



Task #3 - 页管理器

实现 RAII 管理页面,代码量不多,但存在潜在错误。确保移动赋值时处理自赋值与旧值处理、移动后对象完全失效、drop 后析构函数无作用等问题。



总结:虽然遇到了 bug,但 LRU-K 算法的高效性能使得排名较高,21/117。后续有机会将进一步优化。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
情侣文案英文高级浪漫87句 Love to the people don't wave.什么意思 gladtomeetyou怎么 gladtomeetyou.怎么回答 2016生肖猴运程 武汉买房88平方满50万落户政策 非武汉市户口在武汉市购买70平方总价50万的商品房,可以转户口吗... 我想在武汉买一套50万左右的新房子,谁能告诉我现在武昌,关山,江夏,有... 支付宝怎么开通步数授权? 总价50万能在武汉买一套两室一天的二手房吗? 得力指纹考勤机管理员密码是多少? 理疗的词语理疗的词语是什么 中国签定的第一个不平等条约是哪个条约 近代史三大不平等条约有哪些 近代史三大不平等条约的主要内容 工商银行个人网银u盾怎么激活 在中国近代史上最先规定关税制的不平等条约是( ) 我和我丈夫离婚一年了可是我没有和那人有过性生活我怎么会得尖锐... 离婚后的女人还会找到幸福吗? 开一家中档的粥五大概需要多少钱 暗黑破坏神2重制版如何联机 暗黑破坏神2重制版怎么联机 华为BLN-AL40无法连接电脑_华为bln-al40怎么强制恢复出厂 在中国,没有性生活的婚姻会导致离婚吗?。。。 男人离婚后没有了性生活,会不会影响身体健康? 咸阳麦当劳加盟需要多少钱 加盟麦当劳一般多少钱 县城麦当劳加盟费是多少钱,麦当劳加盟大概是多少钱啊 如何快速加盟麦当劳咖啡,加盟麦当劳要多少钱要具备什么条件 电动车锂电池充电时间要多少小时? 加盟开麦当劳要什么条件,加盟麦当劳需要投资多少钱 熊果素祛斑霜在昆明呈贡哪个药店有卖 读spring源码,为什么要用gradle构建。直接导入idea不行吗? CMU 15-445 Project 1 (Spring 2023) | 缓冲池并发 I/O 优化 降低springboot版本? 刮骨疗毒的毒的意思 刮骨疗毒,激浊扬清的意思 胃里有酸水是怎么回事 胃有液体是怎么回事胃有液体有哪些原因v ppt里面添加的表格为什么有颜色ppt里面添加的表格为什么有颜色呢_百 ... 刮骨疗毒,激浊扬清的意思 发动机活塞异响有什么特征?如何用示波器诊断? 电信国内流量包有哪些 睡觉前撩女朋友的土味情话句子集合八十句 点火波形的电子点火(EI)次级单缸波形 iphone十五哪一个颜色最保值? 马赛克之城马达巴 暗黑破坏神2重制版如何联机 暗黑破坏神2重制版怎么联机 我是一名淘宝店家,请问微糖商城和其他商城比较有哪些区别?微糖的特色在... 开一家中档的粥五大概需要多少钱 高血压的症状究竟有哪些呢 忍者村大战谁克(我爱罗)?