页面置换算法练习题

时间:2024-04-07 14:31:12

例:在一个请求分页存储系统中,一个进程的页面走向为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))

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

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