最优置换:(参照未来OPT)
可以将将来很长一段时间不会访问的逻辑页面,进行置换
举例说明:
首先物理空间只有4个,然后遍历了ABCD 页,其中,要访问5 e 了但是没有,即发生缺页中断,然后要置换,首先能看到abc需要访问的时间都很短相对与d来说,所以就把d置换就好了
先进先出算法(FIFO)
先进来的时间最长,在链首,其次时间最长,应该先被淘汰,然后新进来的在链尾;但是有可能把访问时间最多的页面删除掉,性能变差
比如这个,连续完美错过(连续中断)
最久最近未被使用(LRU)
很长时间没访问,不和驻留时间最长一个概念
例子
长时间没被访问到过的,被置换掉
lru算法需要记录的每个页的对应使的时间的先后顺序,开销比较大。两种可能的
用栈来实现就是底部用来存放访问时间等待最长的元素,顶部存放刚访问的元素
时钟页面置换算法(CLOCK)
利用指针来扫描环形链表中的页表的访问位,如果是1,那么表示最近被访问过,操作系统会将不定时的将方位位清零。
(页号,访问位,帧号)
访问位为0,那么如果发生缺页中断,就会将将要访问的那个页表替换到这个物理页中,并且访问位为1,指针指向下一个位置
如果访问位为1那么就变成0,指针切换到下一个位置
最不常用算法(LFU)
策略最不长使用的
遍历链表时间上非常慢
LRU是根据访问的时间,LFU是根据访问的次数
Belady 现象 LRU FIFO CLOCK 算法的比较
先进先出算法,三个物理页的时候,12次访问9缺页中断
增加物理页为4 并未提升命中效率,反而12次10 中断,这就是Belady现象
LRU是随着物理页的增加,缺页次数减少的过程