置换算法:
指的是当出现缺页异常,需调入新页面而内存已满是,置换算法选择被置换的物理页面.
实现要求: 尽可能地减少页面的调入调出次数.
局部页面置换算法
-
最优页面置换算法(OPT)
- 缺页时,计算内存中每个逻辑页面的下一次访问时间,选择未来最长时间不访问的页面
实际中无法实现,作为置换算法的性能评价依据
-
先进先出算法(FIFO)
-
选择在内存驻留时间最长的页面进行置换
会出现belady问题
最近最久未使用算法(LRU)
- 选择最长时间没有被引用的页面进行置换
-
最优置换算法的一种近似
-
实现
页面链表(按最近一次访问时间排序的页面列表):
- 链表首节点是最近刚刚使用过的页面
- 页面尾节点是最久未使用的页面
- 访存,将向应页面移动到链表头
- 缺页时,置换链表尾的页面
活动页面栈
- 访问页面时,将此页号压入栈顶,并将栈内相同的页号抽出(将相同页号移动到栈顶)
- 缺页时,置换栈底数的页面
-
时钟置换算法
- 仅对页面访问情况进行大致统计
-
实现
环形链表:
- 在页表项中增加访问位,描述页面在过去的一段时间内访问情况
- 各页面组织成环形链表
- 指针指向最先调入的页面
原理:
-
页面装入内存访问位置0 访问页面置 1
-
缺页时从指针当前位置顺序检查环形链表
- 访问位为0,置换该页
- 访问位为 1 ,则访问位置 0 .指针向下移动寻找可以置换的页面
-
改进的Clock算法
-
减少修改页的缺页处理开销
算法:
- 在页面中增加修改位,并在访问时进行相应修改
- 缺页时,修改页面标志位以跳过有修改的页面
-
最不常用算法(LFU)
-
考虑的是访问的次数
原理:
- 每个页面设置一个访问次数
- 访问页面时,访问计数加 1
- 缺页时,置换计数最小的页面