【操作系统】FIFO、LRU、OPT三种置换算法的缺页次数计算

【操作系统】FIFO、LRU、OPT三种置换算法的缺页次数计算

例:假设系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1,分别用FIFO、LRU、OPT三种置换算法计算缺页次数。

1. FIFO先进先出

按照先进先出的规则机型页面置换即可,即先进来的页面先被置换。(可看做一个大小为3的队列,如果该元素在队列里就不要动队列中元素的顺序)

   7,0,1 置换3次(刚开始内存是空着的,自然三个物理块都是缺页的)
   2:2,0,1 置换1次(7最先进来,所以7被置换掉)(0,1,2)
   0:2,0,1(0在页面中,不置换)
   3:2,3,1 置换1次(从最开始算起,0最先进来,0被置换掉)(1,2,3)
   0:2,3,0 置换1次(从最开始算起,1最先进来,1被置换掉)(2,3,0)
   4:4,3,0 置换1次(从最开始算起,2最先进来,2被置换掉)(3,0,4)
   2:4,2,0 置换1次(从最开始算起,3最先进来,3被置换掉)(0,4,2)
   3:4,2,3 置换1次(从最开始算起,0最先进来,0被置换掉)(4,2,3)
   0:0,2,3 置换1次(从最开始算起,4最先进来,4被置换掉)(2,3,0)
   3:0,2,3(3在页面中,不置换)
   2:0,2,3(2在页面中,不置换)
   1:0,1,3 置换1次(从最开始算起,2最先进来,2被置换掉)(3,0,1)
   2:0,1,2 置换1次(从最开始算起,3最先进来,3被置换掉)(0,1,2)
   0:0,1,2(0在页面中,不置换)
   1:0,1,2(1在页面中,不置换)
   7:7,1,2 置换1次(从最开始算起,0最先进来,0被置换掉)(1,2,7)
   0:7,0,2 置换1次(从最开始算起,1最先进来,1被置换掉)(2,7,0)
   1:7,0,1 置换1次(从最开始算起,2最先进来,2被置换掉)(7,0,1)

所以,总的置换次数为:3+12=15次

2. LRU最近最久未使用置换算法

该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t。当需要淘汰一个页面时,选择现有页面中其t值最大的。
或可以看作一个大小为3的队列,每遇到一个元素,就让该元素放在队列尾(即便该元素在队列里,即队列中的元素顺序可能改变)

7: 7 置换1次**(刚开始内存是空着的,自然三个物理块都是缺页的)(7(t=0))
0:7,0 置换1次(7(t=1),0(t=0))
1:7,0,1 置换1次(7(t=2),0(t=1),1(t=0))
2:2,0,1 置换1次(7最久未使用,7被置换掉)(2(t=0),0(t=2),1(t=1))或(0,1,2)(或后面的即看作一个队列时,队列里元素的情况)
0:2,0,1(0在页面中,不置换)(2(t=1),0(t=0),1(t=2))或(1,2,0)
3:2,0,3 置换1次(1最久未使用,所以1被置换掉)(2(t=2),0(t=1),3(t=0))或(2,0,3)
0:2,0,3(0在页面中,不置换)(2(t=3),0(t=0),3(t=1))或(2,3,0)
4:4,0,3 置换1次(2最久未使用,所以2被置换掉)(4(t=0),0(t=1),3(t=2))或(0,3,4)
2:4,0,2 置换1次(3最久未使用,所以3被置换掉)(4(t=1),0(t=2),2(t=0))或(0,4,2)
3:4,3,2 置换1次(0最久未使用,所以0被置换掉)(4(t=2),3(t=0),2(t=1))或(4,2,3)
0:0,3,2 置换1次(4最久未使用,所以4被置换掉)(0(t=0),3(t=1),2(t=2))或(2,3,0)
3:0,3,2(3在页面中,不置换)(0(t=1),3(t=0),2(t=3))或(2,0,3)
2:0,3,2(2在页面中,不置换)(0(t=2),3(t=1),2(t=0))或(0,3,2)
1:1,3,2 置换1次(0最久未使用,所以0被置换掉)(1(t=0),3(t=2),2(t=1))或(3,2,1)
2:1,3,2(2在页面中,不置换)(1(t=1),3(t=3),2(t=0))或(3,1,2)
0:1,0,2 置换1次(3最久未使用,所以3被置换掉)(1(t=2),0(t=0),2(t=1))或(1,2,0)
1:1,0,2(1在页面中,不置换)(1(t=0),0(t=1),2(t=2))或(2,0,1)
7:1,0,7置换1次(2最久未使用,所以2被置换掉)(1(t=1),0(t=2),7(t=0))或(0,1,7)
0:1,0,7(0在页面中,不置换)(1(t=2),0(t=0),7(t=1))或(1,7,0)
1:1,0,7(1在页面中,不置换)(1(t=0),0(t=1),7(t=2))或(7,0,1)

所以,总的置换次数为:12次

3. OPT最佳置换算法(可保证获得最低的缺页率)

其选择的被淘汰页面将是以后永不使用的,或者是在最长时间(未来)内不再被访问的页面。

  7,0,1 置换3次(刚开始内存是空着的,自然三个物理块都是缺页的)
  2:2,0,1 置换1次(在2后面的页面号中,看7,0,1哪个页面号最后出现,就置换掉该页面:最先出现的是0,然后是1,最后是7,所以将7置换掉)
  0:2,0,1(0在页面中,不置换)
  3:2,0,3 置换1次(在3后面的页面号中,看2,0,1哪个页面号最后出现,就置换掉该页面:最先出现的是0,然后是2,最后是1,所以将1置换掉)
  0:2,0,3(0在页面中,不置换)
  4:2,4,0 置换1次(在4后面的页面号中,看2,0,3哪个页面号最后出现,就置换掉该页面:最先出现的是2,然后是3,最后是0,所以将0置换掉)
  2:2,4,0(2在页面中,不置换)
  3:2,3,0 置换1次(在3后面的页面号中,看2,4,0哪个页面号最后出现,就置换掉该页面:最先出现的是0,然后是2,最后是4,所以将4置换掉)
  0:2,3,0(0在页面中,不置换)
  3:2,3,0(3在页面中,不置换)
  2:2,3,0(2在页面中,不置换)
  1:2,1,0 置换1次(在1后面的页面号中,3不再出现,所以将3置换掉)
  2:2,1,0(2在页面中,不置换)
  0:2,1,0(0在页面中,不置换)
  1:2,1,0(1在页面中,不置换)
  7:7,1,0 置换1次(在7后面的页面号中,2不再出现,所以将2置换掉)
  0:7,1,0(0在页面中,不置换)
  1:7,1,0(1在页面中,不置换)

所以,总的置换次数为:3+1+1+1+1+1+1=9次

在这里插入图片描述

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值