《操作系统概念(原书第9版)》
第9章 虚拟内存管理
9.4 页面置换
9.4.2 FIFO页面置换
当必须置换页面时,将选择最旧的页面
页面调入内存的时间
可能出现Belady异常
对于有些页面置换算法,
随着分配帧数量的增加,
缺页错误率可能会增加
9.4.3 最优页面置换【OPT】
置换最长时间不会使用的页面
位于内存的3个页面中最后被再次引用的页面
页面将来使用的时间
具有所有算法的最低的缺页错误率
不会遭受Belady异常
9.4.4 LRU页面置换【最近最少使用算法】
当需要置换页面时,LRU选择最长时间没有使用的页面
9.4.5 近似LRU页面置换【时钟算法】
基本算法:FIFO置换算法
实现方式:循环队列
在向前移动时,它会清除引用位
一旦找到牺牲页面,就置换该页面,
并且在循环队列的这个位置上插入新页面
指针指示接下来要置换哪个页面
当需要一个帧时,指针向前移动直到找到一个引用位为0的页面
在最坏的情况下,当所有位都已设置,指针会循环遍历整个队列,给每个页面第二次基会
在选择下一个页面进行置换之前,它将清除所有引用位
如果所有位都为1,第二次机会置换退化为FIFO替换
9.4.6 基于计数的页面置换
最不经常使用 LFU
置换具有最小(引用)次数的页面
最经常使用 MFU
置换具有最大(引用)次数的页面
例题
1. 采用按需调页(demand paging),现有3个页框,分别存储着页面号2,3,4三个页面。已知接下来的页面访问顺序为1,2,3,4,1,2,5,1,2,3,4,5。使用时钟算法(clock algorithm)作为页面替换算法。(8分)
1)请计算会发生的缺页次数(假设初始时在页框内的页面的引用位(reference bit)都是1,2/3/4三个页面按序存放,初始时指针指向页面2)?(5分)
2)请写出这一内存访问序列所对应的时间段中的工作集(3分)
1)9次缺页
2){1,2,3,4,5}
2.已知页面访问序列为:1, 2, 3, 4, 1, 2, 4, 1, 3, 5,分配的页框数为3。
(1) 请分别用FIFO、LRU、时钟算法,写出调页的过程,并计算缺页率。
(2) 请问时钟算法是否会导致Belady异常,为什么?
参考答案:
FIFO:
1*, 2*, 3*,4*, 1*, 2*, 4, 1, 3*, 5*, 8次
LRU:
1*, 2*, 3*, 4*, 1*, 2*, 4, 1, 3*, 5*, 8次
时钟算法:
和初始时钟位置有关可能会
3.(10‘)现有两个进程P1和P2,当前的页面访问序列分别为:
P1: 1, 2, 3, 4, 1, 2, 5
P2: 6, 7, 8, 6, 7, 6, 7
这两个进程总共可有5个页框可供使用。假设使用LRU替换策略,页框分配采用固定分配(即分配后不可修改),请问如何在两个进程间分配页框可以达到缺页率最低?请写出替换序列,和缺页率计算过程(4’);并证明该分配对于给出的序列是最优的(6‘)。
答:2, 3 (10次缺页)
1, 1, 3, 4, 1, 2, 5
2, 2, 3, 4, 1, 2
6, 6, 6, 6, 6, 6, 6
7, 7, 7, 7, 7, 7
8, 8, 8, 8, 8
证明:
1. 给P2更多页面不会减少P2的缺页率;
2. 给P1 3个页面不会减少P1的缺页率,但是会增加P2的缺页率;
3. 给P1 4个页面,P1的缺页次数为5,但是P2的缺页次数为7。
4.在分页虚拟存储管理系统中,假定系统为某个进程分配了4个页帧,页的访问顺序为 7,1,2,0,3,0,4,2,3,0,3,2,7,0,1,若采用FIFO调度算法、OPT、LRU调度算法时,分别产生多少次缺页中断?写出过程.
答案:都是8次缺页中断