操作系统之页面置换算法——FIFO、OPT和LRU

目录

前言 

缺页中断和缺页中断率

FIFO先入先出算法

定义

举例

策略 

思路 

最终解 

 缺页中断率

OPT最佳页面替换算法

定义

举例

策略

思路

最终解 

缺页中断率 

LRU最近最少使用算法

定义

举例

策略

思路

最终解

缺页中断率

结束语


前言 

今天是坚持写博客的第13天,为坚持和努力的自己和大家点赞。时间很快,马上就要满两周了,总体收获还是有的,不至于一无所获。

我们今天来讲讲操作系统里面的三种页面置换算法,希望对大家的理解、复习和备考有所帮助。


缺页中断和缺页中断率

在正式介绍前,我们需要了解缺页中断的概念和缺页中断率的计算方法。这一部分可以根据需要选择阅读。

缺页中断就是发生页面插入空缺位置或发生替换已经加入的页面的时刻,缺页中断率=缺页中断次数/总替换次数。


FIFO先入先出算法

定义

FIFO,First In First Out,先入先出算法,是最简单的页面替换策略,它按照页面进入内存的顺序来决定替换哪个页面。即优先淘汰最早进入内存的页面,不论这些页面之后是否被频繁访问。但是FIFO可能会导致“Belady异常”,即随着分配给进程的物理块数增加,缺页次数反而增加。 

举例

策略 

假设我们有一组需要替换的页面(7,0,1,2,0,3,0,4,2,3,0,3,2),有三个空间可以用来替换,我们使用FIFO算法进行替换,可以遵循以下策略:

  1. 先写下需要替换的页面
  2. 依次放入三个空间,若有空空间则直接放入,没有空空间则“向过去看”,替换掉距离当前位置最远的一个页面。
  3. 不断重复上面的步骤,直到完成所有页面的替换。

思路 

根据策略,我们可以得出下面的思路,演示图在思路后面放出:

  1. 有三个空位,7放入。此时的三个页面为7-空-空。
  2. 有两个空位,0放入。此时的三个页面为7-0-空。
  3. 有一个空位,1放入。此时的三个页面为7-0-1。
  4. 没有空位,2与7-0-1比较,0和1最近放入,7不是最近放入,2替换7, 此时的三个页面为2-0-1。
  5. 没有空位,0与2-0-1比较,0与“0”重合,不替换。
  6. 没有空位,3与2-0-1比较,2和1最近放入,0不是最近放入,3替换0,此时的三个页面为2-3-1。
  7. 没有空位,0与2-3-1比较,2和3最近放入,1不是最近放入,0替换1,此时的三个页面为2-3-0。 

以此类推,我们可以得到最终结果,在最后一次替换后,我们可以得到最终存在页面中的是0-2-3。

最终解 

PS:灵魂画手上线了 

在图片中的示例中,每次插入或替换的页面已经用红色标出,未发生替换时已经标出“不替换”。我们可以根据图像得出规律,FIFO的图像规律类似于一条波浪线,因此可以检查“波浪线”来看自己是否替换正确。

 缺页中断率

此时的缺页中断率为10/13。不知道缺页中断率的小伙伴可以看文章开头的提示。


OPT最佳页面替换算法

定义

OPT,Optimal Page Replacement,最佳页面替换算法,是一种基于全局信息做出决策的页面替换算法,每次选择未来最长时间不再被访问的页面进行替换,可以达到最低的缺页率。 

举例

策略

仍然假设我们有一组需要替换的页面(7,0,1,2,0,3,0,4,2,3,0,3,2),有三个空间可以用来替换,我们使用OPT算法进行替换,可以遵循以下策略:

  1. 先写下需要替换的页面
  2. 依次放入三个空间,若有空空间则直接放入,没有空空间则“向未来看”,寻找已经存入的页面哪一个最久没有被使用,将他替换。
  3. 不断重复上面的步骤,直到完成所有页面的替换。

思路

根据策略,我们可以得出如下思路:

  1. 有三个空位,7放入。此时的三个页面为7-空-空。
  2. 有两个空位,0放入。此时的三个页面为7-0-空。
  3. 有一个空位,1放入。此时的三个页面为7-0-1。
  4. 没有空位,2与未来将要出现的页面比较,7最长时间没有出现,2替换7,此时的三个页面为2-0-1。
  5. 没有空位,0已经出现不换。
  6. 没有空位,3与未来将要出现的页面比较,1最长时间没有出现,3替换1,此时的三个页面为2-0-3。
  7. 没有空位,0已经出现不换。
  8. 没有空位,4与未来将要出现的页面比较,0最长时间没有出现,4替换0,此时的三个页面为2-4-3。

以此类推,我们可以得到最终解。最后的结果为2-0-3

最终解 

PS:灵魂画手梅开二度 

缺页中断率 

缺页中断率为7/13。


LRU最近最少使用算法

定义

LRU,Least Recently Used,最近最少使用算法,如果一个数据最近被访问过,那么将来被访问的可能性也较大。因此,它选择最近最长时间未被访问的页面进行替换。LRU的性能和效率接近OPT,但是对于频繁访问的页面更新开销较大。

举例

策略

还是假设我们有一组需要替换的页面(7,0,1,2,0,3,0,4,2,3,0,3,2),有三个空间可以用来替换,我们使用LRU算法进行替换,可以遵循以下策略: 

  1. 先写下需要替换的页面
  2. 依次放入三个空间,若有空空间则直接放入,没有空空间则“向过去看”,寻找已经存入的页面哪一个最久没有被使用,将他替换。
  3. 不断重复上面的步骤,直到完成所有页面的替换。

思路

根据策略,我们可以得出如下思路:

  1. 有三个空位,7放入。此时的三个页面为7-空-空。
  2. 有两个空位,0放入。此时的三个页面为7-0-空。
  3. 有一个空位,1放入。此时的三个页面为7-0-1。
  4. 没有空位,2和过去出现的页面7-0-1比较,7最久没被使用,2替换7,此时的三个页面为2-0-1。
  5. 没有空位,0已出现,不换。
  6. 没有空位,3和过去出现的页面2-0-1比较,1最久没被使用,3替换1,此时的三个页面为2-0-3。(解释:因为0刚刚使用过,只是没有被替换掉,因此此时最久没被使用的页面时1)
  7. 没有空位,0已出现,不换。
  8. 没有空位,4和过去出现的页面2-0-3比较,2最久没被使用,4替换2,此时的三个页面为4-0-3。

以此类推,我们可以得到最终解,最终完成替换后的页面为0-3-2。

最终解

灵魂画手梅开三度

PS:这里博主发现一个不知道是否可以称为规律的规律:将要被替换的三个页面向“过去”数,出现次数最多的把他替换。比如上面例子中的页面4,在他之前,2出现4次,0出现6次,3出现2次,0出现的次数最多,因此它最长时间没被使用,需要替换0。

这里博主写的时候也愣了一下,有点被自己绕进去了,需要好好体会,或多看文章,纳广见于脑中才能得出一个相对正确的答案。

缺页中断率

缺页中断率为9/13。


结束语

今天对操作系统中的三种页面替换算法的解释就到这里,希望对大家有帮助,如果对您有所帮助,希望您可以留下点赞或关注,让我的文章进入您的收藏夹吃灰或者留下您的建议也可以,这对我真的很重要,谢谢!

FIFO算法OPT算法LRU算法是常见的页面置换算法,它们都用于解决操作系统中的页面置换问题。下面是它们的缺页率比较: 1. FIFO算法(先进先出算法): - 算法介绍:FIFO算法是最简单的页面置换算法,它总是选择最早进入内存的页面进行淘汰。 - 举例:假设内存中有3个页面页面访问序列为1, 2, 3, 4, 1, 2, 5。使用FIFO算法进行页面置换,当内存中的页面数不足时,将最早进入内存的页面淘汰。根据这个页面访问序列,FIFO算法的缺页次数为4,缺页率为4/7=0.57。 2. OPT算法(最优页面置换算法): - 算法介绍:OPT算法是一种理论上的最优页面置换算法,它根据未来的页面访问情况选择最长时间内不再被访问的页面进行淘汰。 - 举例:假设内存中有3个页面页面访问序列为1, 2, 3, 4, 1, 2, 5。使用OPT算法进行页面置换,根据未来的页面访问情况,选择最长时间内不再被访问的页面进行淘汰。根据这个页面访问序列,OPT算法的缺页次数为2,缺页率为2/7=0.29。 3. LRU算法(最近最久未使用算法): - 算法介绍:LRU算法是一种基于页面访问历史的页面置换算法,它选择最近最长时间没有被访问的页面进行淘汰。 - 举例:假设内存中有3个页面页面访问序列为1, 2, 3, 4, 1, 2, 5。使用LRU算法进行页面置换,根据页面的访问历史,选择最近最长时间没有被访问的页面进行淘汰。根据这个页面访问序列,LRU算法的缺页次数为3,缺页率为3/7=0.43。 综上所述,根据给定的页面访问序列,FIFO算法的缺页率为0.57,OPT算法的缺页率为0.29,LRU算法的缺页率为0.43。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值