2015-12-01 9 views
0

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

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

Размер страницы должен быть ограничен 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 
    } 
} 

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

+0

Очевидно, что он использует 1 или 2 страницы в зависимости от того, происходит ли пересечение границы страницы. Этот код крошечный. –

+0

Цикл - это только одна часть более крупной программы. Спецификации проекта просто говорят, чтобы вычислить ссылки на страницы в цикле. – freelancer05

ответ

0

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