CMU-15445 2026 Spring Project 1 Buffer Pool Manager
Project Page Task 1 Adaptive Replacement Cache Replacement Policy 需要感性理解这个算法的流程。 在 RecordAccess 函数中,如果命中了 MRU ghost 或者 MFU ghost,我们都需要把它 移动到 MFU list 中。实现的过程中还是遇到了一个小 Bug,从 MRU ghost 或者 MFU ghost 移除 page_id 之后,还要记得把它从 ghost_map_ 中移除。这是我新加的数据结构,记录 当前在任意一个 ghost 列表中存在的 page_id Task 2 Disk Scheduler 直接使用已经实现的 Channel 作为线程安全的任务队列。 Task 3 Buffer Pool Manager 这个部分最难。 需要注意死锁问题、数据竞争问题。 细节 一 下面是我遇到的一个 Bug,它导致 gradescope ParadiseLostTest 测试失败。 我在 NewPage 的时候,对新页分配了一个 frame。在 CheckedReadPage/CheckedWritePage 中, 如果没有 free frame,需要尝试 Evict,但是 Evict 的页有可能是当前请求的 page_id,此时 old_page_id == page_id,然后我把 old_page_id 从 page_table 中移除了,这就导致了 Bug。 正确做法应该检查 old_page_id != page_id。 ...