页面置换算法与缺页计算

前言
页面置换算法

页面置换算法是页式虚拟存储器中的管理算法。在进程运行过程中,若其所要访问的页面不在内存,则需要把他们调入内存,单内存已无空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送到磁盘的对换区中。但是将哪个页面调出,则是由一定的算法来确定的,我们把这些算法叫做页面置换算法。
本文仅介绍三种页面置换算法:OPT、FIFO、LRU。

缺页中断

缺页中断(页缺失)是和页面置换算法相关的,当程序运行时,发现它需要访问的页不在内存中,那么就会停止该指令的运行,并发出一个页不存在的异常,对应的故障处理程序可通过从外存中加载该页的方法来排除故障。而在加载页的过程可能需要调出页,这个过程中需要用到页面置换算法。
我们的目标自然是越少的发生缺页中断越好,因为频繁的调入调出更换页面太浪费时间了。

页面置换算法与缺页计算
先入先出页面置换算法(FIFO)

FIFO算法是最早出现的直观算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面淘汰。
假定系统为某进程分配了3个物理块,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2
那么它的页面置换顺序为:

701203042303212
777222444000
00033322211
1110003332

一共进行了 9 次页面置换。

最佳(Optimal,OPT)置换算法

最佳置换算法是一种理论上的算法。其所选择的被淘汰的页面将是以后永不使用的,或者是在未来最长时间不再被访问的页面。采用最佳置换算法可以确保获得最低的缺页率,但是显然目前很难做到预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间不被访问的,因此该算法目前无法实现。
我们通常用该算法去衡量其它算法的好坏,如果采用最佳置换算法,那么对于同样的物理块与页面引用号,它的页面置换顺序为:

701203042303212
77722222
0000400
113331

最佳置换算法只发生了 5 次页面置换。

最近最久未使用置换算法(Least Recently Used,LRU)

LRU算法是根据页面调入内存后的使用情况来做出决策的,LRU置换算法选择最近最久未使用的页面予以淘汰。
对于同样的三个物理块以及页面引用号,LRU的页面置换顺序为:

701203042303212
7772244401
000000333
11332222

LRU置换算法只发生了 7 次页面置换,比FIFO要好一些。

当然,以上算法在真正使用时需要一些辅助信息,例如驻留主存的时间、记录上一次访问时间t等,但是本文只用于备考而不涉及代码实现,因此这些实现的细节都被忽略了。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

迷亭1213

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

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

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

打赏作者

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

抵扣说明:

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

余额充值