页面置换算法 【美团暑期实习一面】

简单回顾下虚拟内存技术,基于局部性原理来实现,总结起来就是两句话:

  1. 在程序执行过程中,当 CPU 所需要的信息不在内存中的时候,由操作系统负责将所需信息从外存(磁盘)调入内存,然后继续执行程序
  2. 如果调入内存的时候内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

整个请求调页的过程大概是这样的:

那么,到底哪些页面该被从内存中换出来,哪些页面又该被从磁盘中调入内存呢

这就是『页面置换算法』干的事儿。

考虑这样一种情况:刚刚从内存中换出到磁盘的页面马上又要被重新换入到内存中,刚刚从磁盘中换入到内存的页面马上就要被换出来。这种频繁的页面调度行为称为抖动。这是页面置换过程中一种最糟糕的情形。

所以,一个好的页面置换算法应有较低的页面更换频率,也就是说,应将『以后不会再访问或者以后较长时间内不会再访问的页面』先调出。

常见的置换算法有以下五种:

  1. 最佳(Optimal, OPT)页面置换算法
  2. 先进先出(First-In First-Out, FIFO)页面置换算法
  3. 最近最久未使用(Least Recently Used, LRU)页面置换算法
  4. 时钟(CLOCK)页面置换算法
  5. 最少使用(Least Frequently Used, LFU)页面置换算法

最佳(Optimal, OPT)页面置换算法

最佳置换算法所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。

假定系统为某进程分配了三个物理块,并假设先后访问了以下这些页面号:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

1)进程运行时,先将 7, 0, 1 三个页面依次装入内存(下图中的**『缺页』表示内存中没有该页面,需要从磁盘中调入**)

2)进程要访问页面 2 时,页面 2 不在内存中,需要从磁盘中装入内存,但是此时内存不够了,于是产生缺页中断。根据最佳置换算法,选择第 18 次访问才需调入的页面 7 予以淘汰(最长时间内不再被访问的页面)

 

3)然后,访问页面 0 时,因为已在内存中所以不必产生缺页中断。访问页面 3 时又会根据最佳置换算法将页面 1 淘汰

4)......

依此类推,釆用最佳置换算法时的情况如下图所示,可以看到,发生缺页中断的次数为 9,页面置换的次数为 6(图中 【】 标识的即为发生了页面置换)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwarewow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值