Пример #1
0
 /**
  * Administrador de memoria para guardar un nodo, guarda en el bloque que corresponde el nodo que
  * recibe como parametro, si el bloque esta en memoria principal lo guarda directamente, de lo
  * contrario lo carga desde memoria secundaria y el bloque completo queda en memoria.
  *
  * @param nodo nodo que queremos guardar, sera guardado de acuerdo a sus paremetros getFilePos y
  *     getPagePos
  * @throws IOException
  */
 private void writeAdmin(RNode nodo) throws IOException {
   long fPos = nodo.getMyfPos();
   int i;
   for (i = 0; i < numOfBuffers; i++) {
     if (fPos == thisBlock[i]) {
       writeNode(nodo, i);
       return;
     }
   }
   // Guardo el bloque con peor prioridad a memoria secundaria si fue modificado,
   // si no lo fue solo lo sobreescribo
   i = bufferPrior[numOfBuffers - 1];
   if (bufModified[i]) writeBlock(i);
   readBlock(fPos, i);
   writeNode(nodo, i);
 }