有一个请求页式系统,帧数占4B,页大小为256B,使用LRU页面替换算法,每个进程分配3个页帧。一个进程执行下列代码: int[][]a=new int[200][200]; int i=0; int j=0; while(i++<200) { j=0; while(j++<200) a[i][j]=0; } 这段代码占用第0页,由于每条指令都访问第0页,第0页总是被装入。变量i和j都存储在快速寄存器中。
问答题
假设数组的所有元素都存储在连续的内存区域中,那么数组需要多少页?
【正确答案】 数组有200×200=40000元素,每个元素需要4B的存储空间。160000B占用625页。
【答案解析】
【正确答案】 程序按数组元素的存储顺序访问数组。因此,它将换入指令页,同时625个数据页每页都对应一次换入,故总共是626次换入。
【答案解析】
问答题
如下程序在页式虚存系统中执行,程序代码位于虚空间页,A为128×128的数组,在虚空间以行主秩序存放A(1,1),A(1,2)…,每页放128个数组元素。工作集大小为2个页帧(开始时程序代码已在内存,占了1个页帧),用LRU算法,下面两种对A初始化的程序引起的页故障数分别为______和______。
第一空:
for j:=1 to 128 do
for i:=1 to 128 do
A(i,j):=0;
第二空:
for i:=1 to 128 do
for j:=110 128 do
A(i,j):=0;
【正确答案】 第1个空是128×128,第2个空是128。计算页故障数首先应给出访问串,其次是清楚是哪种替换策略。本题中所给的替换策略无效,因为任何一个替换策略在只有一个页帧的情况下产生的页故障数都是一样的,等于访问串中连续不相等页号的个数。如访问串为1,2,3,4,5,则故障数为5。 (1)中给出的循环条件要求访问的次序为: A(1,1),A(2,1),…,A(128,1),A(1,2),A(2,2),…,A(128,2),…,A(1,128),A(2,128),…,A(128,128); 根据行主秩序存放的条件,访问串为1,2,3,…,128,1,2,3,…,128,…,即重复128遍128个不同的页号,则结果为128×128。 (2)中给出的循环条件要求访问的次序为: A(1,1),A(1,2),…,A(1,128),A(2,1),A(2,2)…,A(2,128)…,A(128,1),A(128,2),…,A(128,128); 根据行主秩序存放的条件,访问串为1,2,…,128(重复的页号合并),结果为128。
【答案解析】 本题考的是页面替换策略中页故障数的计算方法,此类题目通常的出题方式是直接给出访问串,要求按照某替换算法计算页故障数,但像本题这样的方式也时有发生。
提交答案
关闭