Hola tengo dos dudas muy puntuales. El otro día haciendo algunos ejercicios de memoria virtual, me surgió una duda, en un esquema de memoria virtual con paginación, ¿Como detecta el sistema operativo si estoy referenciando a una dirección que esta en la fragmentación interna del espacio de direcciones lógico?. Es decir, se puede detectar por HW si estoy tratando de acceder a una pagina que no esta asignada mediante el bit de validez, sin embargo por un error del programa del proceso una instrucción podría hacer un salto a la fragmentación interna, ¿Como se detecta en ese caso?
Mi otra pregunta es acerca del buffer de cache en System V.
¿Se mantienen las tablas de paginas o paginas individuales en buffer de cache?, ¿Que ocurre con la TLB en ese caso?. Porque me puse a pensarlo y sería como que ambas compiten por el mismo objetivo sin saberlo, pero después lo reconsidere y pensé: La TLB es una cache, se implementa con registros asociativos de alta velocidad, el método de búsqueda ante un page fault, podría ser; Me fijo en la TLB si esta la pagina deseada (La TLB es varios ordenes de tiempo mas rápida que el buffer de cache ya que esta implementada con registros asociativos, mientras que el buffer de cache esta en memoria), si la pagina deseada no esta en la TLB, buscamos en el buffer de cache por un bloque que la contenga, si no esta en el buffer de cache, se busca un buffer disponible en la free list (¿Que ocurre si no hay un buffer disponible?, obviamente tendremos que esperar, ¡Pero se trata de un page fault!, debe atenderse lo mas rápido posible), si se encuentra un bloque disponible se graba en él, si el bloque disponible estaba con delayed write, se descarga a disco antes de escribir el nuevo contenido, una vez escrito se actualiza la TLB, se reinicia la instrucción desde el punto anterior como si el PF nunca hubiera ocurrido, etcétera.
Además algo que leí en el Galvin (Cariñosamente llamado "El de los dinosaurios" por mi xD) que me voló el sombrero, es que en Unix, puede estar el superblock en el buffer de cache. ¿Para que voy a querer tener el superblock en el buffer de cache?, si el superblock solo contiene la información del filesystem, como numero de cilindros, etcétera.
Muchas gracias por detenerse a leer y saludos!