操作系统内存管理二(3)页面置换算法
根据王道2024
一、最佳置换算法(OPT)
方法:
淘汰以后永不使用或最长时间不再访问的页面→获得最低的缺页率
无法预知,无法实现
最长时间不被访问≠被访问次数最小
二、先进先出页面置换算法(FIFO)
基于队列
方式:
淘汰驻留在内存中最久的页面,最早进入内存的页面
特点:
-
实现简单,按次序链接成队列
-
比OPT置换次数多
-
会产生**Belady异常:**分配的物理块数增大而页故障数(缺页次数)不减反增
三、最近最久未使用置换算法(LRU)
基于堆栈
方式:
为每个页面设置一个访问字段,记录自上次被访问到当前的时间,淘汰值最大的页面
特点:
-
性能较好
-
需要寄存器和栈的硬件支持
-
LRU是堆栈类的算法
四、时钟置换算法(CLOCK)
特点:
- 性能接近OPT,实现开销大
方式:
-
简单的CLOCK置换算法(最近未用算法NRU)
循环检查各个页面使用情况(CLOCK算法)
-
每帧设置访问位,首次装入或访问被置为1
-
将内存中的页面视为一个循环队列,替换指针指向被替换页面
-
淘汰时检查访问位,0→换出;1→置为0,不换出,检查下一个页面
-
只有一个访问位,将未使用的页面换出
-
-
改进型CLOCK置换算法
- 每帧设置访问位A和修改位M
过程:
-
一轮扫描,循环检查各个页面访问位和修改位的情况,先寻找第一个1类页面作为淘汰页,不改变访问位A
-
二轮扫描,寻找第一个2类页面作为淘汰页,改变扫描过的页面访问位置0
-
三轮扫描,所有帧访问位复0,重复步骤a,有需要继续执行b
特点:
- 可减少磁盘IO次数,但是开销增加