有一个虚拟存储系统采用最近最少使用(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次缺页中断。
由此看出缺页次数的多少也与程序的编制方法有关。