Как рассчитать количество страниц, используемых программой, и номера страниц в том порядке, в котором они указаны?

Цель этого проекта - взять ранее созданную программу, которая рассчитывает перекрестный продукт на основе матрицы данных, и протестировать алгоритмы замены страниц на ней.

Идея состоит в том, чтобы выяснить, сколько страниц используется программой, и порядок, в котором ссылки на различные номера страниц используются во время цикла, в котором рассчитывается перекрестный продукт.

Размер страницы должен быть ограничен 4096 для тестирования. Я не совсем уверен, с чего начать с определения строки ссылки на страницу. Вот цикл, в котором он должен быть рассчитан:

for(int i=0; i<6; i++)
{
    for(int j=0; j<6; j++)
    {
        x->result[i][j]+=array[i]*array[j]; //cross product algorithm                                         
                                             //performed on line
    }
}

Буду очень признателен за любую помощь или совет, я довольно потерян, с чего начать, но как только у меня появится представление о том, как на самом деле получить справочную строку, я смогу сделать все остальное.

1 ответ

Номера страниц, на которые ссылается выражение x->result[i][j]+=array[i]*array[j] являются

  • (uintptr_t)(void *)&x->result[i][j]/4096
  • (uintptr_t)(void *)&array[i]/4096
  • (uintptr_t)(void *)&array[j]/4096

(при условии, что x->result[i][j], array[i] а также array[j] не пересекайте границы страницы); порядок, в котором они ссылаются в течение одной итерации, не определяется стандартом языка.

Другие вопросы по тегам