Lab1 Buffer Pool

时钟更换策略

时钟的组成

CMU 14-445/645 Project #1 Buffer Pool

对于单个frame应当有以下三部分组成:frame_idRefPIN

frame_id:唯一确定id,与buffer pool相对应。

Ref:该frame最近是否使用过。使挑选的frame尽量是很久之前使用的(类似与LRU)

PIN:该frame是否正在使用。

?> 注:该时钟不包含任何page信息,真正的page是存储在buffer pool。该时钟只是在buffer pool满了后,buffer pool manager希望加载新的page时,为其提供可以替换的frame_id

时钟的初始化

frame_id:初始化0-X-1,X代表buffer pool中能存储Page的数量。

接下来两个元素的初始化,我们就要先要知道时钟使用的时机:所有的buffer pool都加载了Page,加载一个Page那对应的PIN必然是true,若Page的使用还未结束那么Ref的初始化应当为false

Ref:上述分析,false

PIN:上述分析,true

CMU 14-445/645 Project #1 Buffer Pool

Victim

Victim(受害者),方法名很有意思。就在buffer pool满了时,buffer pool manager希望加载新的page时,为其提供可以替换的frame_id

首先我们要知道我们要找什么样的受害者:PINfalseRef也为false。代表现在不在使用,且最近未被使用。

CMU 14-445/645 Project #1 Buffer Pool

hand是时钟的指针,它顺时针旋转,便可以发现可以被移除的frame

如果hand扫描一圈发现所有的PIN都是true的话,就代表所有的page都在被使用,就无法加载新的pagebuffer pool,便返回false。如Clock刚初始化的时候:

CMU 14-445/645 Project #1 Buffer Pool

还有一个问题,就是我说的在PIN都是true时才找不到,但是我们要找的确是PINRef都为false的情况。那是因为Ref是可以改变的,当时针扫描过一个frame时,若它的PINfalse,且Ref为true,那此时便将Ref变为false

CMU 14-445/645 Project #1 Buffer Pool

PIN

PIN(固定方法)则是代表,该frame中存储的page正在使用,不能将其移除(PIN = true)。

UNPIN

UNPIN(取消固定方法)则是代表,该frame中存储的page正在使用,可以将其移除(PIN = false),同时该frame刚被使用过(Ref = false)。

CMU 14-445/645 Project #1 Buffer Pool

缓冲池管理器

管理器的组成

CMU 14-445/645 Project #1 Buffer Pool

由三部分组成Buffer PoolClockFree List。他们分别的作用:

Buffer Pool:用来存储Page

Free List:目前Buffer Pool中有那几个地方没有加载Page

Clock:在Free List为空时(Buffer Pool加载满时),提供可以移除的受害者。

FetchPage

FetchPage(获取page),若在Buffer Pool中,直接返回对象。若不在,则从磁盘中加载后返回对象。

CMU 14-445/645 Project #1 Buffer Pool

NewPage

CMU 14-445/645 Project #1 Buffer Pool

Page的结构

CMU 14-445/645 Project #1 Buffer Pool
pageIdPage唯一的唯一标识,决定其存储位置。

pinCount:正在被多少线程使用。

dirty:内容是否修改

Data:存储在磁盘上的数据

UnpinPage

CMU 14-445/645 Project #1 Buffer Pool

相关文章:

  • 2021-12-03
  • 2021-08-12
  • 2021-04-22
  • 2021-11-13
  • 2022-01-30
  • 2022-01-28
  • 2021-11-17
  • 2021-08-31
猜你喜欢
  • 2021-07-16
  • 2022-12-23
  • 2022-12-23
  • 2019-03-28
  • 2021-06-05
  • 2021-12-07
  • 2021-10-11
相关资源
相似解决方案