操作系统 II 页面置换

《操作系统概念(原书第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次缺页中断

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
页面置换算法是操作系统的一个重要概念,用于解决虚拟内存页面置换问题。常见的页面置换算法包括最佳置换算法、先进先出页面置换算法、最近最久未使用置换算法、改进型Clock置换算法和页面缓冲算法等。 最佳置换算法是一种理论上的算法,它总是选择最长间内不再被访问的页面进行置换,以保证最小化缺率。但是,由于需要预测未来的页面访问情况,因此在实际应用很难实现。 先进先出页面置换算法是一种简单的算法,它总是选择最先进入内存的页面进行置换。这种算法容易实现,但是可能会导致“老旧页面”长间占用内存,从而增加缺率。 最近最久未使用置换算法是一种基于间局部性原理的算法,它总是选择最长间未被访问的页面进行置换。这种算法相对于先进先出算法能够更好地利用间局部性,但是需要维护一个访问间戳,因此实现起来比较复杂。 改进型Clock置换算法是一种基于钟算法的改进算法,它通过维护一个环形链表和一个访问位来实现页面置换。这种算法相对于最近最久未使用算法能够更好地平衡页面的访问频率和间,但是需要更多的硬件支持。 页面缓冲算法是一种基于缓存的算法,它通过将热点数据缓存到内存来减少缺率。这种算法相对于其他算法能够更好地利用空间局部性,但是需要更多的内存空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值