Memoria Asociativa y Segmentación: Optimización del Rendimiento en Sistemas Operativos

Memoria Asociativa: Optimización de la Traducción de Direcciones

La memoria asociativa se fundamenta en el principio de localidad, el cual indica que la mayoría de los programas tienden a referenciar un porcentaje pequeño de sus páginas durante períodos prolongados. Basándose en este principio, se dota a los computadores de un dispositivo de hardware que asocia direcciones virtuales con direcciones reales (físicas) sin necesidad de consultar la tabla de páginas.

  • Acelera la traducción de direcciones.
  • Se basa en la observación de que los programas referencian repetidamente un conjunto reducido de páginas.
  • Implementa un dispositivo hardware (memoria asociativa) que asocia direcciones virtuales con físicas.
  • Forma parte de la MMU (Unidad de Gestión de Memoria).
  • Posee un número pequeño de entradas.
  • Realiza una búsqueda paralela en todas las entradas.

Fallo de Página: Gestión de la Ausencia de Páginas en Memoria

  • Las páginas que residen en disco se marcan en la tabla de páginas del proceso con el bit de residencia (r) en cero. Si el proceso las referencia, se genera una interrupción.
  • Esta interrupción se conoce como fallo de página (page-fault).
  • La rutina de atención de un fallo de página implica que el Sistema Operativo (SO) cargue en memoria la página causante del fallo. El proceso se suspende durante la lectura del disco.
  • Una vez completada la operación, el proceso se reanuda de manera transparente, sin que perciba la ausencia temporal de la página.
  • La duración de la suspensión del proceso es comparable al tiempo de acceso del disco (aproximadamente entre 8 y 20 milisegundos).

Algoritmos de Sustitución de Páginas: Selección de Víctimas para el Intercambio

  • Cuando ocurre un fallo de página, el SO debe decidir qué página en memoria se transferirá a disco para alojar la página requerida.
  • Si la página saliente ha sido modificada, se reescribe en disco.
  • Aunque se puede elegir una página aleatoriamente, es más eficiente seleccionar una que no se vaya a utilizar en el futuro cercano.

Sustitución Óptima de Páginas (Teórica)

  • Selecciona la página en memoria que tardará más tiempo en ser referenciada.
  • Minimiza los fallos de página al máximo posible.
  • Es irrealizable en la práctica, ya que no se dispone de esta información a priori.

Estrategia del Reloj: Una Aproximación Práctica a LRU

  • Esta estrategia es una aproximación al algoritmo LRU (Least Recently Used). Se basa en que no es necesario identificar la página LRU exacta, sino que basta con elegir una página que no haya sido accedida durante un tiempo considerable.
  • La estrategia del reloj organiza las páginas reales de forma circular, simulando las manecillas de un reloj. Un puntero señala una página en cada instante. Inicialmente, todas las páginas tienen su bit R (de referencia) en 0. Con el tiempo, algunas páginas son accedidas y su bit R cambia a 1.

Estrategia del Working Set: Prevención del Trashing

  • Esta estrategia aborda el problema del trashing (intercambio excesivo de páginas) combinando la paginación por demanda con el swapping (intercambio de procesos completos). La idea central es mantener un mínimo de páginas para cada proceso, garantizando una tasa de fallos de página baja. Este mínimo se denomina working-set (conjunto de trabajo).
  • Si el planificador de páginas no tiene suficiente memoria para los working-sets de todos los procesos, solicita al planificador de mediano plazo que realice swapping de procesos (transferencia de procesos completos a disco).

Segmentación: Organización Lógica de la Memoria

La segmentación es un esquema de gestión de memoria en el que la estructura del programa refleja su división lógica. La información se agrupa en bloques de tamaño variable denominados segmentos.

Ventajas de la Segmentación

  • El programador tiene conocimiento de las unidades lógicas de su programa, lo que permite un tratamiento específico.
  • Es posible compilar módulos separados como segmentos.
  • La separación de módulos facilita la modificación. Los cambios en un módulo no afectan al resto.
  • Facilita la compartición de segmentos.
  • Los segmentos pueden crecer dinámicamente según las necesidades del programa en ejecución.
  • Permite definir segmentos que aún no existen, asignando memoria solo cuando sea necesario. Un ejemplo son los arreglos cuya dimensión se desconoce inicialmente.

Desventajas de la Segmentación

  • Incrementa los costos de hardware y software para su implementación, así como el consumo de recursos (memoria, tiempo de CPU).
  • Debido al tamaño variable de los segmentos, pueden surgir problemas de fragmentación externa, requiriendo planes de reubicación de segmentos en memoria principal.
  • Complica la gestión de memoria virtual, ya que los discos almacenan información en bloques de tamaño fijo, mientras que los segmentos son de tamaño variable. Esto exige mecanismos más costosos que los utilizados en la paginación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.