【例题1】在一个分页虚拟存储管理系统中,一个程序的页面走向为4,3,2,1,4,3,5,4,3,2,1,5。利用最久最近未使用算法:
(1) 当分配给程序3个存储块时,求出程序的页面中断的次数
(2) 当分配给程序4个存储块时,求出程序的页面中断的次数
注:在大部分情况下虽然题目没有指明,但基本默认缺页中断的判断规则是:每调进一个新页,产生一次页面中断。
解(1):
分配给该作业的物理块数M=3时,页面置换情况如下表所示。
综上表可知:缺页中断的次数为10
详细的分析请参见文末。
解(2):
分配给该作业的物理块数M=3时,页面置换情况如下表所示。
综上表可知:缺页中断的次数为8
详细的分析请参见文末。
【例题2】在一个分页虚拟存储管理系统中,一个程序的页面走向为2,4,1,2,5,0,6,3,0,4,2,3,设分配给该程序的存储块数M=3,每调进一个新页就发生一次缺页中断。当分别采用最佳置换算法、先进先出置换算法和最近最久未使用算法时,求缺页的次数和缺页中断率。
解:(1)分配给该作业的物理块数M=3时,利用先进先出置换算法得出的页面置换情况如下表所示。
【例题1】
第一小问详解
当分配给程序3个存储块时,页面置换情况如下表所示。
为了好看,先写一个空表
访问顺序就是按照页面走向来排的,
当4进来时,内存尚为空,4进来后占据1页。由于在4进来之前内存块中事先没有4的存在,所以此时4对于内存而言是一个新页,按照缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=1。
当3进来时,内存已经被4占据了1块,此时内存剩余容量为2。当3进来后占据1页。由于在3进来之前内存中事先没有3的存在,所以此时3对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=2。
当2进来时,内存已经被4、3占据了2块,此时内存剩余容量为1。当2进来后占据1页。由于在2进来之前内存中事先没有2的存在,所以此时2对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=3。
当1进来时,内存已经被4、3、2占据了3块,此时内存无剩余量,且1是一个新页,1想要进来就必须替换掉4、3、2中的一个,替换的规则就是看1左边的访问过了的顺序4、3、2,找到离1最近的要替换的数字4、3、2,那么究竟要替换哪一个数呢?答案是4最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了2,上上一秒访问了3,上上上一秒访问了4)所以最近最久未使用的就是4,所以就让1替换掉4,与此同时缺页数加1,此时缺页数=4。
当4进来时,内存已经被1、3、2占据了3块,此时内存无剩余量,且4是一个新页,4想要进来就必须替换掉1、3、2中的一个,替换的规则就是看4左边的访问过了的顺序4、3、2、1,找到离4最近的要替换的数字1、3、2,那么究竟要替换哪一个数呢?答案是3最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了1,上上一秒访问了2,上上上一秒访问了3)所以最近最久未使用的就是3,所以就让4替换掉3,与此同时缺页数加1,此时缺页数=5。
当3进来时,内存已经被1、4、2占据了3块,此时内存无剩余量,且3是一个新页,3想要进来就必须替换掉1、4、2中的一个,替换的规则就是看3左边的访问过了的顺序4、3、2、1、4,找到离3最近的要替换的数字1、4、2,那么究竟要替换哪一个数呢?答案是2最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了4,上上一秒访问了1,上上上一秒访问了2)所以最近最久未使用的就是2,所以就让3替换掉2,与此同时缺页数加1,此时缺页数=6。
当5进来时,内存已经被1、4、3占据了3块,此时内存无剩余量,且5是一个新页,5想要进来就必须替换掉1、4、3中的一个,替换的规则就是看5左边的访问过了的顺序4、3、2、1、4、3,找到离5最近的要替换的数字1、4、3,那么究竟要替换哪一个数呢?答案是1最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了3,上上一秒访问了4,上上上一秒访问了1)所以最近最久未使用的就是1,所以就让5替换掉1,与此同时缺页数加1,此时缺页数=7。
当4进来时,内存已经被5、4、3占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当3进来时,内存已经被5、4、3占据了3块,此时内存剩余量为0。当3进来后,由于在3进来之前内存中事先有3的存在。所以此时的3对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当2进来时,内存已经被5、4、3占据了3块,此时内存无剩余量,且2是一个新页,2想要进来就必须替换掉5、4、3中的一个,替换的规则就是看2左边的访问过了的顺序4、3、2、1、4、3、5、4、3,找到离2最近的要替换的数字5、4、3,那么究竟要替换哪一个数呢?答案是5最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了3,上上一秒访问了4,上上上一秒访问了5)所以最近最久未使用的就是5,所以就让2替换掉5,与此同时缺页数加1,此时缺页数=8。
当1进来时,内存已经被2、4、3占据了3块,此时内存无剩余量,且1是一个新页,1想要进来就必须替换掉2、4、3中的一个,替换的规则就是看1左边的访问过了的顺序4、3、2、1、4、3、5、4、3、2,找到离1最近的要替换的数字2、4、3,那么究竟要替换哪一个数呢?答案是4最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了2,上上一秒访问了3,上上上一秒访问了4)所以最近最久未使用的就是4,所以就让1替换掉4,与此同时缺页数加1,此时缺页数=9。
当5进来时,内存已经被2、1、3占据了3块,此时内存无剩余量,且5是一个新页,5想要进来就必须替换掉2、1、3中的一个,替换的规则就是看5左边的访问过了的顺序4、3、2、1、4、3、5、4、3、2、1,找到离5最近的要替换的数字2、1、3,那么究竟要替换哪一个数呢?答案是3最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了1,上上一秒访问了2,上上上一秒访问了3)所以最近最久未使用的就是3,所以就让5替换掉3,与此同时缺页数加1,此时缺页数=10。
综上:当分配给程序3个存储块时,程序的页面中断的次数为10
第二小问详解
当分配给程序4个存储块时,页面置换情况如下表所示。
为了好看,先写一个空表
访问顺序就是按照页面走向来排的,
当4进来时,内存尚为空,4进来后占据1页。由于在4进来之前内存块中事先没有4的存在,所以此时4对于内存而言是一个新页,按照缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=1。
当3进来时,内存已经被4占据了1块,此时内存剩余容量为2。当3进来后占据1页。由于在3进来之前内存中事先没有3的存在,所以此时3对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=2。
当2进来时,内存已经被4、3占据了2块,此时内存剩余容量为1。当2进来后占据1页。由于在2进来之前内存中事先没有2的存在,所以此时2对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=3。
当1进来时,内存已经被4、3、2占据了3块,此时内存剩余容量为1。当1进来后占据1页。由于在1进来之前内存中事先没有1的存在,所以此时1对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=4。
当4进来时,内存已经被4、3、2、1占据了4块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当3进来时,内存已经被4、3、2、1占据了4块,此时内存剩余量为0。当3进来后,由于在3进来之前内存中事先有3的存在。所以此时的3对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当5进来时,内存已经被4、3、2、1占据了4块,此时内存无剩余量,且5是一个新页,5想要进来就必须替换掉4、3、2、1中的一个,替换的规则就是看5左边的访问过了的顺序4、3、2、1、4、3找到离5最近的要替换的数字4、3、2、1,那么究竟要替换哪一个数呢?答案是2最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了3,上上一秒访问了4,上上上一秒访问了1,上上上上一秒访问了2)所以最近最久未使用的就是2,所以就让5替换掉2,与此同时缺页数加1,此时缺页数=5。
当4进来时,内存已经被4、3、5、1占据了4块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当3进来时,内存已经被4、3、5、1占据了4块,此时内存剩余量为0。当3进来后,由于在3进来之前内存中事先有3的存在。所以此时的3对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
当2进来时,内存已经被4、3、5、1占据了4块,此时内存无剩余量,且2是一个新页,2想要进来就必须替换掉4、3、5、1中的一个,替换的规则就是看2左边的访问过了的顺序4、3、2、1、4、3、5、4、3找到离2最近的要替换的数字4、3、5、1,那么究竟要替换哪一个数呢?答案是1最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了3,上上一秒访问了4,上上上一秒访问了5,上上上上上上一秒访问了1)所以最近最久未使用的就是1,所以就让2替换掉1,与此同时缺页数加1,此时缺页数=6。
当1进来时,内存已经被4、3、5、2占据了4块,此时内存无剩余量,且1是一个新页,1想要进来就必须替换掉4、3、5、2中的一个,替换的规则就是看1左边的访问过了的顺序4、3、2、1、4、3、5、4、3、2找到离1最近的要替换的数字4、3、5、2,那么究竟要替换哪一个数呢?答案是5最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了2,上上一秒访问了3,上上上一秒访问了4,上上上上一秒访问了5)所以最近最久未使用的就是5,所以就让1替换掉5,与此同时缺页数加1,此时缺页数=7。
当5进来时,内存已经被4、3、1、2占据了4块,此时内存无剩余量,且5是一个新页,5想要进来就必须替换掉4、3、1、2中的一个,替换的规则就是看5左边的访问过了的顺序4、3、2、1、4、3、5、4、3、2、1找到离5最近的要替换的数字4、3、1、2,那么究竟要替换哪一个数呢?答案是4最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了1,上上一秒访问了2,上上上一秒访问了3,上上上上一秒访问了4)所以最近最久未使用的就是4,所以就让5替换掉4,与此同时缺页数加1,此时缺页数=8。
综上:当分配给程序4个存储块时,程序的页面中断的次数为8