问答题
有一个虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,每个作业占3页主存,其中一页用来存放程序和变量i,j(不作他用)。每一页可存放1 50个整数变量,某作业程序如下: VAR A:ARRAY[1..150,1..100]OF integer; i,j:integer; FOR i:=1 to 150 DO FOR j:=1 to 100 D0 A [i,j]:=0; 设变量i,j放在程序页中,初始时,程序及变量i,j已在内存,其余两页为空,矩阵A按行序存放。 (1)试问当程序执行完后,共缺页多少次? (2)最后留在内存中的是矩阵A的哪一部分?
【正确答案】(1)100次 (2)最后留在内存中的是矩阵A的第148,149,150行的数据。
【答案解析】[解析] 每2页存放3行的数据,也就是访问3行的数据产生2次缺页,一共150页,所以共产生缺页100次。 类似题型: 内存分配1个物理块装数据,初始时矩阵数据均不在内存;页面大小为100个整数;矩阵A100×100按行存放。这两个程序执行时分别会产生多少次缺页中断? 程序编制方法1: for i:=1 to 100 for j:=1 to 100 A[i,j]:=0; 程序编制方法2: for j:=1 to 100 for i:=1 to 100 A[i,j]:=0; 此题程序编制方法1中,矩阵是按行存放,程序也是按行存取的,所以产生缺页次数为100;程序编制方法2中,矩阵是按行存放,程序却是按列存取,则调入一页只取其中一个数据,便产生1次缺页,一共是100*100个数据,则共产生10000次缺页中断。 由此看出缺页次数的多少也与程序的编制方法有关。