Gestión de Memoria: Swapping, Caché y Algoritmos de Reemplazo de Páginas

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,01 KB

Swapping: Intercambio de Páginas en Memoria

El swapping es un mecanismo fundamental en la gestión de memoria que implica la selección de una página a desalojar de la memoria principal para dar cabida a una nueva. Este proceso es crucial para el rendimiento del sistema operativo.

  • Si la página a desalojar fue modificada, debe ser enviada y copiada al disco antes de ser reemplazada.
  • Si la página no fue modificada, se elimina directamente de la memoria y se actualiza con la nueva página.
  • La selección de la página a desalojar es crítica: si se elige una página de uso frecuente, se generará un bajo rendimiento; de lo contrario, el impacto será positivo.

Aplicaciones del Swapping

El concepto de swapping se aplica también en:

  • Memoria caché: Para gestionar el espacio limitado y optimizar el acceso a datos.
  • Servidores de páginas web: Para manejar eficientemente las solicitudes y el contenido.

La correcta selección de la página a sustituir es de suma importancia para la eficiencia del sistema.

Caché: Acelerando el Acceso a Datos

Una caché es un repositorio de copias de datos a los que se puede acceder más rápidamente que a los datos originales. Su propósito principal es hacer que los accesos frecuentes sean rápidos, sin que los accesos ocasionales resulten excesivamente costosos.

Es una de las técnicas más utilizadas para acelerar el rendimiento de los computadores. Se pueden crear cachés de diversos elementos, como:

  • Posiciones de memoria
  • Traducción de direcciones
  • Páginas
  • Bloques de archivos
  • Nombres de archivos
  • Rutas de red
  • Entre otros.

Condiciones para la Eficacia de la Caché

La caché solo funciona de manera óptima si se cumplen ciertas condiciones:

  • El caso frecuente ocurre con suficiente asiduidad.
  • El caso no frecuente no es excesivamente costoso.

Cálculo del Tiempo de Acceso Medio

El tiempo de acceso medio en un sistema con caché se calcula mediante la siguiente fórmula:

Tiempo de acceso medio = (tasa de aciertos × tiempo de acierto) + (tasa de fallos × tiempo de fallo)

Razones para la Implementación de la Caché

La implementación de la caché se justifica por varias razones clave relacionadas con la eficiencia y el rendimiento:

  • Realizar traducciones de direcciones en cada acceso a memoria es un proceso demasiado costoso.
  • Una sola operación puede requerir al menos tres accesos a la memoria física.
  • Pueden ocurrir operaciones de Entrada/Salida (E/S) si la tabla de páginas reside en disco.

Solución: Translation Lookaside Buffer (TLB)

Una solución eficaz a la problemática de las traducciones de direcciones es el Translation Lookaside Buffer (TLB), que actúa como una caché especializada para estas traducciones.

Principios de Localidad

La eficacia de la caché se basa en los principios de localidad:

  • Localidad temporal: Los datos utilizados recientemente son más propensos a ser utilizados nuevamente en un futuro cercano.
  • Localidad espacial: Después de acceder a un elemento en memoria, los elementos cercanos a este tienen una alta probabilidad de ser utilizados a continuación.

Optimización de la Jerarquía de Memoria

El uso correcto de la jerarquía de memoria permite equilibrar el costo y la velocidad, optimizando el rendimiento general del sistema.

Algoritmos de Reemplazo de Páginas

Cuando la memoria principal está llena y se necesita cargar una nueva página, el sistema operativo debe decidir cuál página existente desalojar. Para ello, se utilizan diversos algoritmos de reemplazo de páginas.

Algoritmo Óptimo de Reemplazo de Páginas

Este algoritmo es conceptualmente simple, pero imposible de implementar en la práctica:

  • Desaloja la página que no se utilizará durante el período de tiempo más largo en el futuro.
  • Por ejemplo, si una página no se va a utilizar durante 8 millones de instrucciones y otra durante 6 millones, eliminar la primera pospondrá el fallo de página asociado lo más lejos posible.
  • Al igual que las personas, las computadoras intentan posponer los eventos indeseables el mayor tiempo posible.

Algoritmo No Usadas Recientemente (NRU)

El algoritmo NRU (Not Recently Used) requiere que el sistema operativo (SO) recopile estadísticas útiles sobre el uso de las páginas. Cuando ocurre un fallo de página, el SO inspecciona todas las páginas y las divide en cuatro categorías basándose en los valores actuales de sus bits R (Referenciado) y M (Modificado):

Clasificación de Páginas en NRU

  • Clase 0: No ha sido referenciada, no ha sido modificada (R=0, M=0).
  • Clase 1: No ha sido referenciada, ha sido modificada (R=0, M=1).
  • Clase 2: Ha sido referenciada, no ha sido modificada (R=1, M=0).
  • Clase 3: Ha sido referenciada, ha sido modificada (R=1, M=1).

El algoritmo NRU tiende a desalojar páginas de las clases más bajas primero.

Algoritmo LRU (Least Recently Used)

El algoritmo LRU (Least Recently Used) reemplaza la página que no ha sido utilizada en el mayor tiempo posible. Sus características incluyen:

  • Ofrece buenos resultados si el programa exhibe una fuerte localidad de referencia.
  • Se puede implementar utilizando listas enlazadas, donde la página más reciente se agrega a la cabeza y la LRU se encuentra en la cola.
  • Su implementación puede requerir un número considerable de instrucciones, lo que puede ser costoso en términos de rendimiento.

Algoritmo del Reloj

El algoritmo del Reloj es una aproximación al LRU que utiliza un puntero (la "manecilla del reloj") que apunta a la página más antigua. El proceso es el siguiente:

  • Si el bit R (Referenciado) de la página a la que apunta la manecilla es 0, la página se desaloja, la nueva página se inserta en su lugar en el reloj y la manecilla avanza una posición.
  • Si el bit R es 1, se borra (se pone a 0) y la manecilla avanza a la siguiente página.
  • Este proceso se repite hasta encontrar una página con R=0.

No es de extrañar que a este algoritmo se le conozca como el algoritmo del reloj debido a su funcionamiento circular.

Algoritmo FIFO (First-In, First-Out)

El algoritmo FIFO (First-In, First-Out) es uno de los más simples:

  • Se elimina la página más antigua que ingresó a la memoria.
  • Equidad: Cada página permanece en la caché el mismo tiempo.
  • Ineficiente: No diferencia entre páginas muy usadas y poco usadas, lo que puede llevar a desalojar páginas activas.

Algoritmo MIN (Mínimo/Óptimo)

El algoritmo MIN (Mínimo) es el mismo que el algoritmo óptimo:

  • Se reemplaza la página que no será usada de nuevo en el mayor tiempo.
  • Excelente, pero: ¡No se puede predecir el futuro! Por lo tanto, es imposible de implementar en sistemas reales.
  • Su objetivo principal es servir como punto de comparación para evaluar la eficiencia de otros algoritmos de reemplazo de páginas.

Algoritmo Aleatorio

El algoritmo Aleatorio es el más sencillo en su lógica:

  • Se elimina una página al azar de la memoria.
  • Solución típica para el TLB: Debido a su simplicidad de hardware, a menudo se utiliza para el Translation Lookaside Buffer (TLB).
  • Impredecible: Es difícil garantizar tiempos de respuesta específicos, lo que lo hace menos adecuado para sistemas en tiempo real.
  • El costo de un error (desalojar una página crítica) puede ser muy alto.

Entradas relacionadas: