题目内容

某计算机采用段页式虚拟存储器,已知虚拟地址为32位,按字编址,每个段最多可以有1K页,每页为16KB,主存容量为64MB,回答以下问题: 在虚拟分页存储管理的系统中,程序员编写了下面这段代码。 已知A是一个10000000×1000的稀疏矩阵,非零元素个数为8737953个。S是1000×1000的矩阵(二维数组),所有元素初始化为0。每个页面可以容纳1024个元素。 for(i=0; i<10000000; i++) for(j=0; j<999; j++) if(A[i][j]!=0) { for(k=j+1; k<1000; k++) if(A[i,k]!=0) S[j, k]=1; } 该程序员运行该程序后,发现严重超时,通过代码分析工具得知,A[i][k]!=0耗时异常严重。试解释原因,并写出改进后的代码。

查看答案
更多问题

某计算机采用段页式虚拟存储器,已知虚拟地址为32位,按字编址,每个段最多可以有1K页,每页为16KB,主存容量为64MB,回答以下问题: 下面三个函数,以不同的空间局部性程度执行相同的操作。请对这些函数就空间局部性进行排序,并解释是如何得到排序结果的。 #define N 1000 typedef struct{ int vel[3]; int acc[3]; }point; point p[N]; void clear1(point *p, int n) { int i, j; for(i=0; i<n; i++){ for(j=0; j<3; j++) p[i].vel[j]=0; for(j=0; j<3; j++) p[i].acc[j]=0; } } void clear2(point *p, int n) { int i, j; for(i=0; i<n; i++){ for(j=0; j<3; j++) p[i].vel[j]=0; p[i].acc[j]=0; } } void clear3(point *p, int n) { int i, j; for(j=0; j<n; j++){ for(i=0; i<3; i++) p[i].vel[j]=0; for(i=0; i<3; i++) p[i].acc[j]=0; } }

设一进程共有5页,其中程序占3页,常数占一页,工作单元占一页,它们依次存放在外存的第45、46、98、99和100块。现在程序段已分配在内存的第7、10、19页,而常数区和工作区尚未获得内存,请回答下述问题: 页表应包括哪些项目填写此页表。若工作区分配到内存的第9页,则页表应如何变化

设一个没有设置快表的虚拟页式存储系统,页面大小为100B。一个仅有460B的程序有下述内存访问序列(下标从0开始):10、11、104、170、73、309、185、245、246、434、358、364,为该程序分配有两个可用页帧(Page frame)。 若一次访存的时间是10ms,平均缺页中断处理时间为25ms,为使该虚拟存储系统的平均有效访问时间不大于22ms,则可接受的最大缺页中断率是多少

已知系统为32位实地址,采用48位虚拟地址,页面大小为4KB,页表项大小为8B,每段最大为4GB。 如果是二级页表,页面平均访问时间是多少

答案查题题库