页面置换算法练习题

例:在一个请求分页存储系统中,一个进程的页面走向为4,3,2,1,4,3,5,3,2,1,设分配给该进程的内存块数M=4,采用FIFO和LRU页面置换算法(每调进一个新页认为发生一次缺页中断)。计算缺页次数和缺页率(写出计算过程)。

下面简单的把计算方法解释一下:

FIFO(先进先出置换算法)

首先要根据页面走向和内存块数画出表格,行数为页面走向的数量,列数为内存块数的数量(本题中为10行4列的表格)

依次填入一个数据,所以可以填入四次,到第五个页面走向就要进行判断,也就是4,我们看到,4已经存在,则将列表空置,继续进行下一个判断,下一个为3,依旧在列表中存在,仍然置空,来到下一个数,5.我们看到5没有,根据先进先出算法,需要将第一次进入的数进行置换,也就是把4换成5,并填入到表格中,然后下面依次是3,2,1,的判断,皆存在在表格中。所以都置空。(这里补充一下,如果下次再遇到不存在的数,如6,则将第二次进入的3进行置换,也就是把3置换成6填入,以此类推)

然后进行缺页次数和缺页率的计算。

缺页次数=列总数-空白列               缺页率=缺页次数/总列数

 

LRU(最近最久未使用算法)

由于算法的不同,采用置换的方式也会不一样。这里我们引入下标来计时(实际做题中不可以写,这里写出是便于大家理解)。

我们首先填入4,下标为0,也就是在该列表中的存在时间,随着填入的数依次增大。

然后填入3,下标为0,我们这时就要把4的下标变为1

然后填入2,下标为0,此时4的下标为2,      3的下标为1

然后填入1,下标为0,此时4的下标为3,    3的下标为2,     2的下标为1

第五个数4,在该列表中存在,这时需要置空,并对4的下标进行更新,变为0,其它的继续下标加1(也就是4(0),3(3),2(2),1(1))

第六个数3,在该列表中存在,这时需要置空,并对3的下标进行更新,变为0,其它的继续下标加1(也就是4(1),3(0),2(3),1(2))

第七个数5,不存在该列表,这时需要将下标最大的进行置换,也就是2的下标最大,将2置换成5,此时为(4(2),3(1),5(0),1(3))

第八个数3,在该列表中存在,这时需要置空,并对3的下标进行更新,变为0,其它的继续下标加1(也就是4(3),3(0),5(1),1(4))

第九个数2,不存在该列表,这时需要将下标最大的进行置换,也就是1的下标最大,将1置换成2,其它的继续下标加1,(也就是4(4),3(1),5(2),2(0))

第十个数1,不存在该列表,这时需要将下标最大的进行置换,也就是4的下标最大,将4置换成1,其它的继续下标加1,(也就是1(0),3(2),5(3),2(1))

然后进行缺页次数和缺页率的计算。

缺页次数=列总数-空白列               缺页率=缺页次数/总列数

 

最后再补充一下OPT(最佳页面置换算法)

先说一下最佳页面置换算法的做题思路:就是当遇到不存在列表中的页面走向数字时,需要进行判断需要替换的数字,这里的替换是根据列表中的数字中最远的那个,就是后面的一串数中最晚出现的那个,如果出现有个数在后面没有出现过就选这个没出现的数,不会出现两个不存在的数,给的数都是比较有规律的。

回到该题,由于给的数字较少,当遇到第7个数字5的时候,需要进行判断,此时页面中的是4,3,2,1.而后面的数字依次是3,2,1.我们可以看到4,没有存在,所以直接将4替换,如果顺序是4,3,2,。那么替换的就是1了,同理,怎样变数都是这样判断的。

所以这里的数据和FIFO的数据是一样,但是原理不一样。大家要特备注意,注意替换的思路!!!

4 4 4 4     5      
  3 3 3     3      
    2 2     2      
      1     1      

数据既然一样,那么缺页次数和缺页率也是一样的,主要是题型大家这种算法的思路!

猜你喜欢

转载自blog.csdn.net/mez_Blog/article/details/106853446