Arrays 两个数组中的页面错误计数?

Arrays 两个数组中的页面错误计数?,arrays,page-fault,Arrays,Page Fault,家庭作业: 考虑二维数组A: int A[][] = new int[200][200]; 其中[0][0]位于分页内存系统中的位置500处,页面大小为500有点不现实,而不是512。一个处理矩阵的小进程位于第0页的位置0到499。因此,每个指令提取将来自当前存储在第0页中的指令 假设只有五个页面帧,包括页面0,那么使用LRU替换并假设页面帧0包含进程,而其他四个最初为空,以下数组初始化循环会生成多少页面错误 Afor int j=0;j

家庭作业:

考虑二维数组A:

      int A[][] = new int[200][200];
其中[0][0]位于分页内存系统中的位置500处,页面大小为500有点不现实,而不是512。一个处理矩阵的小进程位于第0页的位置0到499。因此,每个指令提取将来自当前存储在第0页中的指令

假设只有五个页面帧,包括页面0,那么使用LRU替换并假设页面帧0包含进程,而其他四个最初为空,以下数组初始化循环会生成多少页面错误

Afor int j=0;j<200;j++ 对于int i=0;i<200;i++ A[i][j]=0

b对于int i=0;i<200;i++ 对于int j=0;j<200;j++ A[i][j]=0

问题:

我从哪里开始弄明白这一点?我已经读完了我的课文,但没有发现有多少有用的东西。我把一些数字扔了过去,发现:

40000=数组项的总数

80 40k/500=总页数

因为每一个循环都会导致一个页面错误

B 80每页一个,40000/500=80


我走对了吗?有什么建议吗?暗示

想想循环A和循环B中的初始化顺序,以及多维数组在内存中的布局。其中一个将按顺序访问内存地址,另一个将跳转。完成200次作业后,您将看到一种情况下为[199][0],另一种情况下为[0][199]。您接触了多少页?

想想循环A和循环B中初始化的顺序,以及多维数组在内存中的布局。其中一个将按顺序访问内存地址,另一个将跳转。完成200次作业后,您将看到一种情况下为[199][0],另一种情况下为[0][199]。您接触了多少页?

我将此作为内存布局和行主顺序的参考点。这不是一个坏主意,对吗?一个跳转,在每2.5次内部迭代之后它就会出现页面错误???B每页只出现一次页面错误。按照这个想法,A会在每个内部循环中出现80次错误,200次,所以A的页面错误总数是80*200,16000。我想就是这样?!我应该继续调查吗?我希望我得到了@谷歌是的,这正是你需要关注的。计算每个案例在不同点的偏移量。请特别注意在每种情况下,在1199200和201步之后会发生什么。@用谷歌搜索我在这种情况下通常做的事情。编写一个简短的程序来模拟另一个程序的行为。执行相同的循环,但计算每种情况下的内存地址,并在跨越页面边界时增加页面错误。这就是为什么我们写程序;为了使解决问题更容易:我将此作为内存布局和行主顺序的参考点。这不是一个坏主意,对吗?一个跳转,在每2.5次内部迭代之后它就会出现页面错误???B每页只出现一次页面错误。按照这个想法,A会在每个内部循环中出现80次错误,200次,所以A的页面错误总数是80*200,16000。我想就是这样?!我应该继续调查吗?我希望我得到了@谷歌是的,这正是你需要关注的。计算每个案例在不同点的偏移量。请特别注意在每种情况下,在1199200和201步之后会发生什么。@用谷歌搜索我在这种情况下通常做的事情。编写一个简短的程序来模拟另一个程序的行为。执行相同的循环,但计算每种情况下的内存地址,并在跨越页面边界时增加页面错误。这就是为什么我们写程序;要使问题更容易解决,请执行以下操作: