Comprensión del TLB, Copy-on-Write, Localidad de Referencia y Ficheros Mapeados en Memoria

Clasificado en Informática

Escrito el en español con un tamaño de 3,84 KB

Entendiendo el TLB y su Importancia en la MMU

¿Qué es el TLB? El TLB (Translation Lookaside Buffer) es un búfer de consulta de traducción, una memoria asociativa de alta velocidad. Cada entrada en el TLB consta de dos partes: una clave y un valor. Cuando se presenta un elemento al TLB, este se compara simultáneamente con todas las claves. Si se encuentra una coincidencia, se devuelve el valor correspondiente.

Funcionamiento del TLB con Tablas de Páginas

El TLB almacena solo algunas entradas de la tabla de páginas. Cuando la CPU genera una dirección lógica, el número de página se presenta al TLB. Si se encuentra el número de página (acierto de TLB), su número de marco correspondiente está disponible de inmediato y se utiliza para acceder a la memoria. Si el número de página no se encuentra en el TLB (fallo de TLB), se realiza una consulta a la tabla de páginas en memoria. Una vez obtenido el número de marco, se utiliza para acceder a la memoria. El número de página y de marco se pueden añadir al TLB para futuras referencias. Si el TLB está lleno, el sistema operativo selecciona una entrada para reemplazarla.

Creación de Procesos con Copy-on-Write

¿Cómo funciona Copy-on-Write? La función fork() crea un proceso hijo como duplicado del proceso padre. Tradicionalmente, esto implica crear una copia del espacio de direcciones del padre para el hijo, duplicando todas las páginas. Sin embargo, muchos procesos hijos invocan exec() inmediatamente después de su creación, haciendo innecesaria la copia completa del espacio de direcciones del padre. La técnica copy-on-write ofrece una alternativa eficiente.

Con copy-on-write, los procesos padre e hijo comparten inicialmente las mismas páginas. Estas páginas compartidas se marcan como de copia durante la escritura. Si cualquiera de los procesos intenta escribir en una de estas páginas compartidas, se crea una copia de esa página, asegurando que cada proceso tenga su propia versión modificable.

El Principio de Localidad de Referencia e Hiperpaginación

¿Qué es la Localidad de Referencia? El modelo de localidad establece que, durante la ejecución de un proceso, este se mueve entre diferentes localidades. Una localidad es un conjunto de páginas que se utilizan activamente de forma combinada. Los programas están compuestos por varias localidades, que pueden solaparse.

Las localidades están definidas por la estructura del programa y sus estructuras de datos. Este modelo afirma que todos los programas exhibirán esta estructura básica de referencias en memoria.

Hiperpaginación: Si asignamos a un proceso suficientes marcos para su localidad actual, el proceso generará fallos de página hasta que todas las páginas de su localidad estén en memoria. Después, no generará más fallos hasta que cambie de localidad. Si asignamos menos marcos que el tamaño de la localidad actual, el proceso entra en hiperpaginación, donde el sistema está constantemente intercambiando páginas entre memoria y disco, degradando el rendimiento.

Implementación de Ficheros Mapeados en Memoria

¿Cómo funciona el mapeo de ficheros en memoria? En un sistema de paginación bajo demanda, cada bloque de disco se mapea a una o varias páginas de memoria. El acceso inicial se realiza mediante paginación bajo demanda, lo que provoca un fallo de página. En este momento, se lee una parte del archivo equivalente al tamaño de una página, extrayendo los datos del sistema de archivos y depositándolos en una página física. A partir de ahí, todas las operaciones de lectura y escritura en el archivo se gestionan como accesos normales a memoria.

Entradas relacionadas: