Как рассчитать количество страниц, используемых программой, и номера страниц в том порядке, в котором они указаны?
Цель этого проекта - взять ранее созданную программу, которая рассчитывает перекрестный продукт на основе матрицы данных, и протестировать алгоритмы замены страниц на ней.
Идея состоит в том, чтобы выяснить, сколько страниц используется программой, и порядок, в котором ссылки на различные номера страниц используются во время цикла, в котором рассчитывается перекрестный продукт.
Размер страницы должен быть ограничен 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]
не пересекайте границы страницы); порядок, в котором они ссылаются в течение одной итерации, не определяется стандартом языка.