最优置换 opt
- 根据未来 预测
- 对于保存在内存中的每一个逻辑页面,计算它在下一次访问之前,还需要等待多长时间,从中选择等多时间最长的那个被置换出去。而LRU是根据过去。
先入先出
- 选择在内存中驻留时间最长的页面。
- belady 给它内存越多,缺页次数却越多。
LRU 最近最久未使用
- 距当前的时间
- 链表实现 替换或插入头,从链表尾替换出去
- 栈 压栈,查看栈内是否有,
时钟页面置换算法
- LRU的近似,对FIFO的一种改进
- 利用页表的access bit 初始位为0,访问置1,组织成环形列表,把指针指向最老页面。缺页中断时,考查指针指向的最老页面,若为0,立即淘汰。若为1,把该位值为0,考查下一个位置。
比LRU差点
二次机会法
- 减少向磁盘写的操作
- 对时钟页面置换算法加强
- 使用access bit(used bit) 和 dirty bit
LFU 最不常用算法
- 使用次数
- 维护计数器,硬件开销大
Belady现象
出现分配 的物理页面数增加,缺页率反而提高的异常现象。 FIFO会产生。 LRU 栈特性 不会产生。 CLock只用1个bit来模拟LRU算法 是FIFO和LRU的折衷。
全局页面置换算法
局部性没有得到满足的时候
-
工作集 W(t,delta)delta为窗口大小 不在窗口内的都要换出去 每个时刻调整
-
常驻集 缺页率页面置换算法 缺页次数/内存访问次数 当缺页率高的时候,增加工作集 当缺页率低的时候,减少工作集 缺页中断的时候调整
抖动问题
常驻集小于工作集时,会缺页,频繁置换,叫做抖动。
缺页平均时间MTBF