一 置换策略:必须读取一个新页时,应该置换内存中的哪一页。
二 置换策略分类:
(1)最佳置换算法(OPT):选择置换下次访问距离当前时间最长的那些页。
*该算法导致最少的缺页中断,但由于无法预知一个进程在内存的若干个页面哪个是未来最长时间不再被访问的,因而该算法无法实现,但是可以作为一种标准来衡量其他置换算法。
(2)最近最久未使用算法(LRU:Least Recently Used):置换内存中上次使用距离当前最远的页。
*LRU策略性能接近于OPT,但比较难实现(需要系统较多硬件支持,需要大量开销)。
(3)FIFO策略:淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
*该算法实现简单,但性能相对较差。
(4)时钟策略(Clock置换算法):
1)简单的Clock置换算法(使用位):给每一个页框关联一个附加位,称为使用位。当某一页首次装入内存中,将该页框的使用位设为1;当该页随后被访问到时,它的使用位也为1。页面置换算法中,用于置换的候选页框集合被看做一个循环缓冲区,并且有一个指针与之关联。
*过程:
~当需要置换一页时,系统扫描缓冲区,以查找使用位被置为0的一页框。当遇到使用位为1的页框时,操作系统就将该位重新设置为0。
~如果所有页框使用位都为1时,则指针在缓冲区中循环一周,把所有使用位都置0,并且停留在最初位置,置换该页框中的页。
2)改进的Clock置换算法(使用位+修改位):将一个页面换出时,如果该页已被修改过,便须将该页重新写回到磁盘上;如果该页未被修改,则不必将它拷回磁盘。在改进的的Clock置换算法中,除要考虑页面的使用情况,还需考虑置换代价。选择页面换出时,既要是未使用过的页面,又要是未被修改过的页面,把同时满足这两个条件的页面作为首选淘汰页面。
*四种类型的页面组合(A:访问位;M:修改位):
~(A=0,M=0):表示该页最近既未被访问,又未被修改,即最佳淘汰页。
~(A=0,M=1):最近未被访问,但被修改。
~(A=1,M=0):最近被访问,但未被修改。
~(A=1,M=1):最近被访问,但被修改。
*执行过程:
1)从指针的当前位置开始,扫描页框缓冲区。在这次扫描过程中,使用位不被修改。选择第一个页框(A=0,M=0)用于置换。
2)如果第1步失败,则重新扫描,查找(A=0,M=1)的页框。选择遇到的第一个这样的页框用于置换。在这个扫描过程中,对每个跳过的页框,把使用位设置为0。
3)如果第2步失败,指针将回到它的最初位置,并且集合中所有页框的使用位都为0。重复第一步,如果有必要,重复第2步,这样就可以找到供置换的页框。
(5)其他算法:
*最少使用置换算法(LFU:Least Frequently Used)。
*页面缓冲算法(PBA:Page Buffering Algorithm)。