目标
- 当缺页中断发生,需要调入新的页面而内存已满,则需要对物理页面进行换入换出操作;
- 尽可能地减少页面换进换出的次数
- 页面锁定:在页面中添加锁定位
最优页面置换算法
- 置换页面是在将来最长时间不会访问的页面
先进先出算法
- first-in first-out,FIFO
- 性能较差,调出的页面可能是经常要访问的页面,并且有belady现象,FIFO算法很少单独使用
最近最久未使用算法
- 最近最久未使用算法(Least Recently Used,LRU)
- 是对最优页面置换算法的一个近视,其依据是程序的局部性原理
- 可能的实现方式:1. 链表 2. 堆栈
时钟页面置换算法
- 环形链表
- 初始化为0,used bit =1 表示最近被使用了,若为0则被置换出去
二次机会置换算法
- 修改clock算法,允许脏页总是在一次时钟头扫描中保留下来
- dirty bit = 1时,则需要回写到外存
最不常用算法
- Least Frequently Used,LFU
- 换出访问次数最少的页面
- 实现方法:增加一个访问的计数器
几种算法的比较
- Belady现象:在采用fifo算法时,有时会出现分配的物理页面数增加,缺页率反而提高的异常现象
- Belady现象的原因:与算法的目标不一致,替换出去的页面,并不是不会访问的页面
