Memoria asociativa
La memoria asociativa se basa en el principio de localidad que establece que la mayoría de programas tiende a referenciar un porcentaje reducido de sus páginas durante períodos relativamente largos de tiempo. Con base en este principio se equipa a los computadores de un dispositivo de hardware para asociar las direcciones virtuales con las direcciones reales (físicas) sin tener que recurrir a la tabla de páginas.
- Permite acelerar la traducción
- Se basa en la observación de que la mayoría de los programas hacen un gran número de referencias a un pequeño número de páginas
- Se equipa a la máquina con un dispositivo hardware que permite asociar direcciones virtuales con físicas: la memoria asociativa
- parte de la MMU
- número pequeño de entradas
- Búsqueda en todas las entradas en paralelo
Fallo de Página
- Las páginas residentes en disco se marcan en la tabla de páginas del proceso con el bit de residencia (r) en cero, de modo que si el proceso las referencia se produce una interrupción.
- Esta interrupción se denomina fallo de página (page-fault).
- En la rutina de atención de un fallo de página, el SO debe carga en memoria la página que causó el fallo de página, el proceso se suspende mientras se realiza la lectura del disco.
- Cuando esta operación concluye, el proceso se retoma en forma transparente sin que perciba la ausencia temporal de esa página.
- La duración de la suspensión del proceso es del orden del tiempo de acceso del disco, es decir entre 8 a 20 milisegundos.
Algoritmos de sustitución de páginas
- Cuando se produce un fallo de página: el SO debe decidir qué página que está en memoria debe pasar a disco para traer a memoria la página requerida.
- Si la página que sale ha sido modificada: se reescribe en disco.
- Se puede elegir aleatoriamente, pero es más eficiente sacar una que no se vaya a utilizar pronto.
Sustitución óptima de páginas
- Buscar de todas las páginas de memoria aquella a la que se tardará más en hacer una referencia a ella.
- Retarda todo lo posible el fallo de página.
- Irrealizable: no se dispone de esta información
Estrategia del Reloj
- Esta estrategia es una aproximación de LRU. El fundamento es que no es necesario escoger exactamente la página LRU, sino que es suficiente elegir una página que lleva harto tiempo sin ser accesada.
- La estrategia del reloj ordena las páginas reales circularmente como si fueran los minutos de un reloj (ver figura ). Un puntero señala en cada instante una de las páginas. Inicialmente todas las páginas parten con R en 0. Luego de cierto tiempo algunas páginas han sido accesadas y por lo tanto su bit R pasa a 1.
Estrategia del Working Set
- Esta estrategia elimina el problema del trashing combinando paginación por demanda con swapping. La idea es mantener para cada proceso un mínimo de páginas que garantice que pueda correr razonablemente, es decir con una tasa de fallo de página bajo. Este mínimo de páginas se denomina working-set.
- Si el planificador de páginas no dispone de memoria suficiente como para tener cargados los working-set de todos los procesos, entonces se comunica con el planificador de mediano plazo para que éste haga swapping de procesos. Es decir se llevan procesos completos a disco.
SEGMENTACIÓN:
Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos.
Ventajas de la segmentación
- El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
- Es posible compilar módulos separados como segmentos
- Debido a que es posible separar los módulos, se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos.
- Es fácil el compartir segmentos.
- Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
- Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer usos del segmento.
Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta tanto no
Desventajas de la Segmentación
- Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
- Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.
- Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.