操作系统中的一些页面置换算法

在进程运行过程中,若其所要访问的页面不在内存,需要把它们调入内存,但内存已无空间时,就需要考虑将从内存中调出一页程序或数据送到磁盘的对换区中,这个过程需要一点的算法来确定,下面就是一些常见的页面调度算法。

1. 最佳置换算法

从名字我们就可以看出来,这种算法通常来说是一种理想化的算法,不可能知道被调出的页在以后的时间内都不会被访问。

最佳置换算法:其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面,采用这种算法可以保证最低的缺页率,但这种算法是不实际的,因为我们无法知道一个进程在内存的若干个页面中,哪一个页面是未来最长时间不再被访问的。

2. 先进先出(FIFO)页面置换算法

先进先出页面置换算法,该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面给予淘汰,但是性能较差,因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况

3. 最近最久未使用(LRU - Least Recently Userd)页面置换算法

LRU置换算法是选择最近最久未使用的页面给予淘汰,该算法为每个页面赋予一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面给予淘汰

4. 最少使用(LFU - Least Frequently Userd)页面置换算法

该置换算法选择在最近时期使用最少的页面作为淘汰页,在对时间进行度量时,采用移位寄存器方式。每次访问某页时,便将该移位寄存器的最高位置置1,再每隔一段时间右移一次,这样,在最近一段时间使用最少的页面将是最小的页

5. Clock 置换算法
简单的 Clock 置换算法

当利用简单 Clock 算法,只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位被置为1,置换算法在选择一页淘汰时,只需检查页的访问位。如果是0,就选择该页换出;若为1,则重新将它置0,暂不换出,给予该页第二次驻留内存的机会,再按照 FIFO 算法检查下一个页面,
在这里插入图片描述

改进型的 Clock 置换算法

在将一个页面换出时,如果该页已被修改过,便将该页重新写回到磁盘,但如果该页未被修改过,则不必将它拷回磁盘。

在改进型 Clock 算法中,除需考虑页面的使用情况外,还须再增加一个因素 - 置换代价。这样,选择页面换出时,既要是未使用的页面,又要是未被修改过的页面。把同时满足这两个条件的页面作为首选淘汰的页面。由访问位 A 和修改位 M 可以组合成以下四种类型的页面:

  • 类(A=0, M=0):表示该页最近即未被访问,又未被修改,是最佳淘汰页。
  • 类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页
  • 类(A=1,M=0):表示最近已被访问,但未被修改,该页可能会被再次访问
  • 类(A=1,M=1):表示最近已被访问且已被修改,该页可能再被访问

改进版的算法1执行过程:

  • 从指针所指示的当前位置开始,扫描循环队列,寻找 A=0 且 M=0 的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位A
  • 如果第一步失败,即查找一轮后未遇到第一类页面,则开始第二轮扫描,寻找 A=0 且 M=1 的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位都置为0
  • 如果第二步也失败,则将指针返回到开始的位置,必将所有的访问位复0,然后重复第一步,即寻找 A=0 且 M=0 的第一类页面,如果仍失败,重复第二步,寻找 A=0 且 M=0

该算法与简单 Clock 算法比较,可减少磁盘的 I/O 操作数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值