2014-12-16 5 views
0

// 1)Расчет количества ошибок страниц в двумерного массива

#include <stdio.h> 
int A[1024][1024]; 
int main(void) 
{ 
    int i, j=0; 
    for (i=0 ; i < 1024 ; i++) 
    { 
     for (j=0 ; j < 1024 ; j++) 
     { 
      A[i][j] = 0; // 
     } 
    } 
} 

// 2)

#include <stdio.h> 
int A[1024][1024]; 
int main(void) 
{ 
    int i, j=0; 
    for (i=0 ; i < 1024 ; i++) 
    { 
     for (j=0 ; j < 1024 ; j++) 
     { 
      A[j][i] = 0; // 
     } 
    } 
} 

Рассмотрим двумерный массив A: int A[1024][1024]; На каждой странице есть 4kb (при этом размер int составляет 4 байта). Небольшой процесс, который управляет матрицей, находится на странице 0 (местоположение от 0 до 1023). Таким образом, каждый выбор команды будет на странице 0.

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

+4

возможно дубликат [Вычисление числа ошибок страниц для 2-го массива ] (http://stackoverflow.com/questions/15961582/calculating-number-of-page-faults-for-2-d-array) –

+0

Сколько человек будет считать это домашней работой, которую вы не пытались? – Coconop

+1

Даже если это был подходящий вопрос, и если вы сначала показали свои собственные усилия, здесь не хватает информации для решения этого вопроса. Количество ошибок страницы будет сильно зависеть от количества физических страниц, которые вы на самом деле имеете, например, если у вас есть достаточное количество страниц, на странице будет только одна ошибка, потому что ничего не будет выселено. Вы получили бы только несколько ошибок на странице, если у вас меньше физических страниц, чем размер вашего рабочего набора ... – twalberg

ответ

-1
  1. 256 (1024 * 1024/4096)
  2. 1024 * 256 (1024 * (1024 * 1024/4096))
+0

@ Элтон ... добавьте в свой ответ объяснение того, как он решает проблему OP. Сделайте это легче для тех, кто менее опытен, чем вы, чтобы понять. –