Administración Eficiente de la Memoria Virtual: Algoritmos de Reemplazo y Políticas de Paginación

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

Escrito el en español con un tamaño de 5,09 KB

Algoritmos de Reemplazo de Páginas

Los algoritmos de reemplazo de páginas son cruciales para la gestión eficiente de la memoria virtual en sistemas operativos. Cuando se produce un fallo de página y no hay marcos de página libres, el sistema debe decidir qué página existente en memoria debe ser reemplazada para dar espacio a la nueva. A continuación, se describen los algoritmos más comunes:

  • Algoritmo Óptimo: Se reemplaza la página que se encuentra en el marco que más tiempo tardará en ser referenciada de nuevo. En la práctica, es irrealizable, ya que no se puede predecir cuándo una página será referenciada nuevamente.
  • LRU (Least Recently Used): Se reemplaza la página que ha sido menos recientemente utilizada. Es decir, aquella con el tiempo de referencia más antiguo. Es similar al algoritmo óptimo, pero su implementación es compleja debido a la necesidad de registrar el tiempo de uso de cada página.
  • FIFO (First-In, First-Out): Se reemplaza la página que fue cargada primero. Es decir, la que lleva más tiempo en memoria. Es muy fácil de implementar, pero puede no ser efectivo en todos los escenarios, ya que una página antigua no necesariamente es una página poco usada.
  • Algoritmo de Reloj: A partir de la posición actual del puntero, se busca la primera página con el bit de uso a cero y se reemplaza. A medida que se recorren las páginas, se debe ir cambiando su bit de uso para la siguiente iteración. Es similar al LRU, pero con una menor sobrecarga computacional.
  • NRU (Not Recently Used): Se considera tanto el bit de uso como el bit de modificación. Se reemplaza, como primera opción, aquella página que tenga ambos bits a cero (no usada, no modificada). Si no se encuentra ninguna, se busca la que tenga el bit de uso a cero y el bit de modificación a uno (no usada, modificada), y así sucesivamente según las prioridades.

El algoritmo NRU es superior al de Reloj, ya que prioriza el reemplazo de páginas no modificadas entre aquellas que no han sido usadas recientemente, reduciendo la necesidad de escrituras en disco.

Gestión del Conjunto Residente

El sistema operativo debe determinar la cantidad de memoria física (marcos de página) a asignar a cada proceso. Para ello, existen diversas alternativas:

  • Asignación Fija: Asigna a cada proceso un número fijo de marcos de página. Esto puede llevar a un desperdicio de espacio si el proceso no utiliza todos sus marcos, o a una insuficiencia de memoria si el proceso necesita más.
  • Asignación Variable: El número de marcos asignados a un proceso puede variar dinámicamente durante su ejecución. Un proceso con una alta tasa de fallos de página (FdP) puede recibir más marcos que uno con una baja tasa de FdP. Aunque es más eficiente, también implica una mayor sobrecarga de gestión.

Adicionalmente, se puede elegir si el reemplazo de páginas se realiza entre los marcos de un único proceso o entre los de cualquier proceso en memoria:

  • Reemplazo Local: Se selecciona una página para reemplazar exclusivamente del proceso que originó el fallo de página (FdP). Puede aplicarse tanto con asignación fija como variable.
  • Reemplazo Global: Cualquier página en la memoria física puede ser seleccionada para reemplazo, independientemente del proceso al que pertenezca. Este enfoque solo es viable con una política de asignación variable.

El conjunto de trabajo (Working Set) se define como el conjunto de páginas a las que un proceso ha hecho referencia en las últimas 'x' unidades de tiempo. Se utiliza para determinar el tamaño óptimo del conjunto residente y el momento adecuado para realizar reemplazos. Si el número de marcos de página disponibles es inferior al tamaño del conjunto de trabajo, se producirán fallos de página frecuentes, lo que puede llevar a la hiperpaginación. El tamaño del conjunto de trabajo puede variar dinámicamente durante la ejecución del proceso, adaptándose a su comportamiento temporal.

Políticas de Vaciado de Páginas

Las políticas de vaciado (o escritura) determinan cuándo una página modificada en memoria debe ser escrita de vuelta al disco. Existen dos enfoques principales:

  • Vaciado por Demanda: Una página modificada se escribe en disco solo en el momento en que va a ser reemplazada (justo antes de cargar la siguiente página). Aunque minimiza la cantidad total de escrituras en disco, puede generar latencia al requerir una operación de E/S por cada reemplazo.
  • Vaciado Previo: Las páginas modificadas se escriben en disco de forma proactiva, antes de que sus marcos sean necesarios para otros fines. Este enfoque puede acelerar el proceso de reemplazo al agrupar las escrituras, pero existe el riesgo de escribir en disco páginas que podrían ser modificadas nuevamente antes de ser reemplazadas, generando escrituras innecesarias.

Entradas relacionadas: