面试知识点总结——操作系统页面置换算法

页面置换算法是在请求分页存储时,调页时候会用到的。页面置换算法的目标是,尽可能减少换入换出次数。常见的页面置换算法有:最优页面置换算法、先进先出算法、最近最久未使用算法(LRU)、时钟页面置换算法、二次机会算法和最不常用算法。我们还会介绍Belady现象。

算法介绍

  1. 最优页面置换算法

    特点:

    • 替换未来很长时间都不会被访问的页面
    • 可保证最低缺页率
    • 由于需要预知未来,所以很难实现
    • 可用作其他算法的评价依据

    举例:

Time 1 2 3 4 5 6 7 8 9 10
Request c a d b e b a b c d
0 c c c c c c c c c c
1 a a a a a a a a a
2 d d e e e e e d
3 b b b b b b b
缺页 × × × × × ×

2. 先进先出算法(FIFO)

特点:

  • 选择在内存中驻留时间最长的页面置换,使用链表实现
  • 实现简单
  • 性能差,会出现Belady现象

    1. 最近最久未使用算法(LRU)

    特点:

  • 选择最久未被使用的页面

  • 它是最优算法的近似,对历史推测未来,依据程序局部性
  • 使用栈来实现,但是需要较多的硬件支持,增加成本

    举例:

Time 1 2 3 4 5 6 7 8 9 10
Request c a d b e b a b c d
0 c c c c e e e e e d
1 a a a a a a a a a
2 d d d d d d c c
3 b b b b b b b
缺页 × × × × × × ×

4. 时钟页面置换算法(NRU)

特点:

  • LRU的近似,FIFO的改进
  • 用到页表项中的访问位
  • 页面组织成环形链表,指向最老的页面
  • 中断产生时,若指向的页面访问位为0,立即淘汰;若为1,则往下移动

    1. 二次机会算法

    特点:

  • 利用dirty bit区分读写

  • 对于只有读操作的页,若置换,只需释放,若有写操作,则需放回磁盘

    1. 最不常用算法(LFU)

    特点:

  • 选择访问次数最少的页置换

  • 计数器来统计

Belady现象

在FIFO算法中,当分配的物理页越多,产生缺页现象也会增多

原因:没有考虑到内存访问的动态性

比较

  • FIFO和LRU本质均为先进先出,LRU考虑了页面最近访问时间
  • clock近似LRU,clock开销小
  • FIFO开销小,但是会出现Belady现象

猜你喜欢

转载自blog.csdn.net/caoyangxiaoyao/article/details/81382155