Количество неисправности страницы в течение двух массивов?

StackOverflow https://stackoverflow.com/questions/3721086

  •  03-10-2019
  •  | 
  •  

Вопрос

Домашнее задание:

Рассмотрим двумерный массив A:

      int A[][] = new int[200][200];

где [0] [0] находится на месте 500 в системе памяти в грунтах со страницами размером 500 (немного нереально - не 512). Небольшой процесс, который манипулирует матрицу, находится на странице 0 (места от 0 до 499). Таким образом, каждая инструкция Fetch будет из инструкции, в данный момент хранятся на странице 0.

Предполагая, что существует только пять страниц, в том числе страница 0, сколько неисправностей страниц генерируются следующими циклами инициализации массива, используя замену LRU и предполагая, что кадра страниц 0 содержит процесс, а остальные четыре изначально пустыются?

А) для (int j = 0; j <200; j ++) для (int i = 0; i <200; i ++) a [i] [j] = 0;

Б) для (int i = 0; i <200; i ++) для (int j = 0; j <200; j ++) a [i] [j] = 0;

Вопрос:

Где я начинаю выяснить это? Я прошел через мой текст, но не нашел многое из этого, чтобы быть полезным. Я бросил несколько номеров, и я нашел:

40 000 = общее количество предметов массива

80 (40k / 500) = Общее количество страниц

А) 20 000 (80 * 250), потому что каждая другая петля вызывает ошибку страницы?

Б) 80 (один для каждой страницы, 40 000/500 = 80)?

Я на правильном пути? Любой совет? Подсказки?

Это было полезно?

Решение

Подумайте о том, чтобы инициализация происходит в цикле A VS Loop B, и как проложен многомерный массив в памяти. Один из них будет получать доступ к адресам памяти по порядку, другой прыгнет. После 200 заданий вы смотрите на [199] [0] в одном случае, а [0] [199] в другом. Сколько страниц вы затронули?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top