Esempio n. 1
0
 //-----------------------------------------------------------------//
 // Escreve na cache uma página de memória na posição indicada
 // por position.
 public void WritePage(MemoryAddressCache position, int page)
 {
     if (spaceCache[position.Row][position.Col] == 0)
     {
         nPages++;
     }
     spaceCache[position.Row][position.Col] = page;
 }
 //-----------------------------------------------------------------//
 // Função para informar à Política de Substituição sobre as mudanças
 // que aconteceram na memória cache durante a última operação
 // de escritura.
 public override void FeedBack(MemoryAddressCache add)
 {
     throw new NotImplementedException("O algoritmo de substituição RANDOM não precisa fazer feedback de informação!!!");
 }
 //-----------------------------------------------------------------//
 // Função para informar à Política de Substituição sobre as mudanças
 // que aconteceram na memória cache durante a última operação
 // de escritura.
 public override void FeedBack(MemoryAddressCache add)
 {
     mru[add.Row][add.Col] = time++;
 }
 //-----------------------------------------------------------------//
 // Função para informar à Política de Substituição sobre as mudanças
 // que aconteceram na memória cache durante a última operação
 // de escritura.
 public override void FeedBack(MemoryAddressCache add)
 {
     lfu[add.Row][add.Col]++;
 }
 //-----------------------------------------------------------------//
 // Construtor da clase base.
 public ReplacementAlgorithm(int cache_size)
 {
     CacheSize = (tabularMemory) ? cache_size / 2 : cache_size;
     Address   = new MemoryAddressCache();
 }
 public abstract void FeedBack(MemoryAddressCache add);
 //-----------------------------------------------------------------//
 // Função para informar à Política de Substituição sobre as mudanças
 // que aconteceram na memória cache durante a última operação
 // de escritura.
 public override void FeedBack(MemoryAddressCache add)
 {
     fifo[add.Row][add.Col] = age++;
 }