宿題:
2次元配列Aについて考えてみます。
int A[][] = new int[200][200];
ここで、A [0] [0]は、サイズ500のページを持つページメモリシステムの500の位置にあります(少し非現実的です。512ではありません)。マトリックスを操作する小さなプロセスは、ページ0(位置0から499)にあります。したがって、すべての命令フェッチは、現在ページ0に格納されている命令から行われます。
ページ0を含むページフレームが5つしかない場合、LRU置換を使用し、ページフレーム0にプロセスが含まれ、他の4つは最初は空であると仮定して、次の配列初期化ループによって生成されるページフォールトはいくつですか。
A)for(int j = 0; j <200; j ++)for(int i = 0; i <200; i ++)A [i] [j] = 0;
B)for(int i = 0; i <200; i ++)for(int j = 0; j <200; j ++)A [i] [j] = 0;
質問:
どこでこれを理解し始めますか?私は自分のテキストを調べましたが、それの多くが有用であるとは思いませんでした。私はいくつかの数字を投げつけました、そして私は見つけました:
40,000=配列アイテムの総数
80(40k / 500)=総ページ数
A)20,000(80 * 250)は、他のすべてのループがページフォールトを引き起こすためですか?
B)80(各ページに1つ、40,000 / 500 = 80)?
私は正しい方向に進んでいますか?何かアドバイス?ヒント?