有一个程序要将64行×64列的整型数组所有元素的初值置为“O”。假如采用页式虚拟存储管理方法,其页面大小可以存放128个整型数组元素(即正好存放两行数组元素),数组中的元素按行编址存放。系统提供一个主存块用来存放数组信息,初始状态为空。 程序编制分别如下:

有一个程序要将64行×64列的整型数组所有元素的初值置为“O”。假如采用页式虚拟存储管理方法,其页面大小可以存放128个整型数组元素(即正好存放两行数组元素),数组中的元素按行编址存放。系统提供一个主存块用来存放数组信息,初始状态为空。 程序编制分别如下: 试问: (1)整个数组占用多少页面? (2)上述两个程序执行时,各产生多少次缺页中断(作简要说明)?


【正确答案】:(1)数组占页面数为32个页面,64×64/128=32(2)A程序产生缺页次数为2048,B程序产生缺页次数为32。
【题目解析】:影响缺页率的因素包括四个方面:分配给程序的物理页面数、页面的大小、程序编制方法、页面调度算法。本题考试的是程序编制方法对缺页率的影响。(1)数组元素个数是64×64元素,每个页面的大小是128个元素,故总的页面数为:总的元素个数/页面大小=64×64/128=32个。(2)内存初始为空A程序按列把数组中的元素清0,第一次缺页中断调入第一行和第二行,置A[1,1]:=0,A[2,1]:=0,第二次缺页中断调入第三行和第四行,置A[3,1]:=0,A[4,1]:=0,依此类推,每产生一次缺页中断,只处理了两个元素,故64×64个元素,总的中断次数为64×64/2=2048次缺页中断。B程序按行把数组中的元素清0,第一次缺页中断调入第一行元素和第二行元素,并可对第一行和第二行中的元素全部清0,即一次中断可以处理128个元素,第二次缺页中断调入第三行和第四行,并全部清0,以此类推,由于每次缺页中断均可处理128个元素,故64×64个元素,总的缺页中断次数为64×64/128=32次。
Top