Está en la página 1de 57

Universidad Americana

Facultad de Sistemas

Sistemas Operativos

CLASE #5

Prof. Vicente Rodríguez


Sistemas
Operativos
ADM INIST RACIÓN DE L A M EM ORIA
Administración de la Memoria
 Objetivos de la administración de memoria
 Modelo de memoria de un proceso
 Esquemas de memoria basados en asignación
contigua
 Intercambio
 Memoria virtual
Objetivos de la administración de
memoria
El SO multiplexa los recursos entre los procesos:
◦ Gestión de procesos: Reparto del procesador.
◦ Gestión de memoria: Reparto de memoria.

Cada proceso “cree” que tiene una máquina solo


para él.
Objetivos de la administración de
memoria (2)
Los objetivos deseables en la administración de
memoria son:
◦ Ofrecer a cada proceso un espacio lógico propio.
◦ Proporcionar protección entre los procesos.
◦ Permitir que los procesos compartan memoria.
◦ Dar soporte a las distintas regiones del proceso.
◦ Maximizar el rendimiento del sistema.
◦ Proporcionar a los procesos mapas de memoria muy
grandes.
Objetivos de la administración de
memoria (3)
Ofrecer a cada proceso un espacio lógico propio.
◦ No se conoce la posición de memoria donde un programa se ejecutará.
◦ El código ejecutable genera referencias entre 0 y N.
◦ Ejemplo: programa que copia un vector

0000 0000 LOAD R1, #1000


0004 Cabecera 0004 LOAD R2, #2000 • Sistema operativo en
…… 0008 LOAD R3, /1500
0096 0012 LOAD R4, [R1]
direcciones más altas
0100 LOAD R1, #1000 0016 STORE R4, [R2] • Programa se carga en
0104 LOAD R2, #2000 Ejecución 0020 INC R1 dirección 0
0108 LOAD R3, /1500 0024 INC R2
0112 LOAD R4, [R1] 0028 DEC R3 • Se le pasa el control al
0116 STORE R4, [R2] 0032 JNZ /12 programa
0120 INC R1 0036 ……………..
0124 INC R2 ……
0128 DEC R3
0132 JNZ /12
0136 …………….. Sistema Operativo

Archivo ejecutable S. O. Monoprogramación


Objetivos de la administración de
memoria (4)
Reubicación
◦ Es un problema cuando el código tiene direcciones absolutas.
◦ En un sistema multiprogramación el SO debe tener la libertad
de ubicar al programa donde quiera.
◦ Consiste en traducir las direcciones lógicas de los programas
ejecutables a direcciones físicas.
Objetivos de la administración de
memoria (5)
La Reubicación crea espacios lógicos independientes para cada proceso.
Existen dos alternativas para la reubicación: (1) Reubicación por hardware y (2)
Reubicación por software.
(1) Reubicación por Hardware (2) Reubicación por Software
• Hardware (MMU) esta encargado de la traducción • Traducción de direcciones durante la carga del
• El SO se encarga de: programa
• Almacenar la función de traducción por proceso • Programa en memoria distinto del ejecutable
• Especificar al Hw la función de traducción del proceso • Desventajas:
• El programa se carga en memoria sin modificar • No permite mover un programa en
tiempo de ejecución
• No asegura protección
Objetivos de la administración de
memoria (6)
Proporcionar protección entre procesos
◦ En sistemas monoprogramación se protege el SO.
◦ En sistemas multiprogramación, además del SO, también debe
haber protección entre los procesos.
◦ La traducción debe crear espacios disjuntos.
◦ Es necesario validar todas las direcciones que genera el
programa.
◦ La detección debe realizarla el hardware del procesador lanzando una
excepción.
◦ El tratamiento lo hace el SO en respuesta a la excepción lanzada por el hw.
Objetivos de la administración de
memoria (7)
Permitir que los procesos compartan
memoria (memoria compartida).
◦ Las direcciones lógicas de dos o más
procesos se corresponden con la misma
dirección física.
◦ La memoria compartida está bajo el
control del SO.
◦ Los beneficios que se tienen son:
◦ Procesos ejecutando un mismo programa
comparten su código.
◦ Mecanismos de comunicación entre
procesos muy rápido.
◦ Requiere asignación no contigua
Objetivos de la administración de
memoria (8)
Problemas al compartir memoria:
◦ Si una posición de la zona de
memoria tiene referencia a otra
posición dentro de la misma zona
de memoria:
◦ En la zona de código podría darse este
caso cuando se tiene una condición de
bifurcación.
◦ En la zona de datos podría darse el caso
cuando se almacena una lista con
punteros.
Objetivos de la administración de
memoria (9)
Dar soporte a las distintas regiones del proceso (soporte de
regiones).
◦ El proceso presenta un mapa de memoria no homogéneo, formado por:
◦ Conjunto de regiones con distintas características.
◦ Ejemplo: región de código no modificable.
◦ El mapa del proceso es dinámico.
◦ Regiones cambian de tamaño (p. ej. La pila).
◦ Se crean y destruyen regiones.
◦ Existen zonas sin asignar (huecos).
◦ La administración de memoria debe dar soporte a las siguientes
características:
◦ Detectar accesos no permitidos a una región.
◦ Detectar acceso a huecos.
◦ El SO debe guardar una tabla de regiones para cada proceso.
Objetivos de la administración de
memoria (10)
Maximizar el rendimiento del sistema
◦ Reparto de memoria maximizando el grado de
multiprogramación.
◦ Se “desperdicia” memoria debido a:
◦ “Restos” inutilizables (fragmentación).
◦ Tablas requeridas por el gestor de memoria.
◦ Una menor fragmentación implica tablas muy
grandes.
◦ La solución es la Paginación.
◦ Otra estrategia para aumentar el grado de
multiprogramación es el uso de memoria virtual.
Objetivos de la administración de
memoria (11)
Proporcionar a los procesos mapas de memoria muy grandes.
◦ Resuelto gracias al uso de memoria virtual.
◦ Antes se usaban los overlays
◦ Programa dividido en fases que se ejecutaban sucesivamente.
◦ En cada momento solo hay una fase residente en memoria.
◦ Cada fase realiza su labor y carga la siguiente.
◦ No es transparente para el programador.
Modelo de memoria de un proceso
El mapa inicial de un proceso está muy vinculado con el
archivo que contiene el programa ejecutable.
La generación de un archivo ejecutable puede dividirse en
dos fases:
 Compilación
 Resuelve referencias dentro de cada
módulo fuente.
 Genera un módulo objeto.
 Montaje (o enlace)
 Resuelve referencias entre módulos
objeto.
 Resuelve referencias a símbolos de
bibliotecas.
 Genera el ejecutable incluyendo
bibliotecas.
Modelo de memoria de un proceso (2)
En la generación del archivo ejecutable intervienen las
bibliotecas y pueden ser de dos tipos:
◦ Estáticas:
◦ Se obtiene un ejecutable autocontenido.
◦ Ejecutables grandes.
◦ Código de biblioteca repetido en muchos ejecutables.
◦ Actualización de la biblioteca implica volver a montar.
◦ Dinámicas:
◦ Carga y montaje de la biblioteca en tiempo de ejecución.
◦ El ejecutable contiene: (1) el nombre de la biblioteca y (2) rutina de carga
y montaje en tiempo de ejecución.
◦ Se carga en la primera referencia que se haga a ella.
Modelo de memoria de un
proceso (3)
Formato del ejecutable
◦ Como parte final del proceso de compilación y montaje, se genera un archivo
ejecutable que contiene el código máquina del programa. Distintos fabricantes han
usado diferentes formatos de archivos (p. ej. ELF de Unix)
Modelo de memoria de un
proceso (4)
El mapa de memoria de un proceso tiene las siguientes
características:
◦ No es algo homogéneo.
◦ Esta formado por un conjunto de distintas regiones o segmentos.
◦ Región:
◦ Zona contigua de memoria tratada como unidad al proteger o compartir.
◦ Tiene asociada una determinada información (“objeto de memoria”).
◦ Cada región se caracteriza por:
◦ Dirección de comienzo y tamaño inicial.
◦ Soporte: donde se almacena su contenido inicial.
◦ Protección: lectura (r), escritura (w) y ejecución (x).
◦ Uso compartido o privado.
◦ Tamaño fijo o variable.
Modelo de memoria de un
proceso (5)
Al crear el mapa de memoria desde el ejecutable las regiones de memoria se
corresponderán básicamente con las secciones del ejecutable más la pila inicial
del proceso.

Compartida, (r,x), T. Fijo, Soporte en


ejecutable

Privada, (r,w), T. Fijo, Soporte en


ejecutable

Privada, (r,w), T. Fijo, Sin Soporte

Privada, (r,w), T. Variable, Sin Soporte,


Crece hacia direcciones más bajas
Pila inicial, argumentos del programa
Modelo de memoria de un
proceso (6)
Durante la ejecución de un proceso se crean nuevas regiones,
así el mapa de memoria tiene un carácter dinámico. Algunas
otras regiones del mapa de memoria son:
◦ Región de Heap
◦ Soporte de memoria dinámica (malloc en C)
◦ Es: Privada, RW, Tam. Variable, Sin Soporte y crece hacia direcciones más altas
◦ Archivo proyectado
◦ Región asociada al archivo proyectado
◦ Tam. Variable, Soporte en Archivo
◦ Protección y carácter compartido o privado especificado en proyección.
◦ Memoria compartida
◦ Región asociada a la zona de memoria compartida.
◦ Compartida, Tam. Variable, Sin Soporte y Protección especificada en
proyección.
◦ Pilas de threads
◦ Cada pila de thread corresponde con una región
◦ Mismas características de la pila de proceso
◦ Carga de biblioteca dinámica
◦ Se crean regiones asociadas al código y datos de la biblioteca.
Modelo de memoria de un
proceso (7)
Durante la vida de un proceso, su mapa de memoria va
evolucionando y con él sus regiones. Existen cuatro operaciones
genéricas sobre dichas regiones:
◦ Crear región
◦ Se da de forma implícita al crear el mapa inicial, o por solicitud del programa (p.
ej. Proyectar un archivo).
◦ Eliminar región
◦ Se da implícitamente al terminar el proceso o por solicitud del programa en
tiempo de ejecución (p. ej. Desproyectar un archivo).
◦ Cambiar de tamaño la región
◦ Se da implícitamente para la pila o por solicitud del heap.
◦ Duplicar la región
◦ Operación requerida por el servicio fork()
Esquemas de memoria basados
en asignación contigua
Un esquema simple de administración de memoria consiste en
asignar a cada proceso una zona contigua de memoria para que
en ella resida su mapa de memoria.
Dentro de este esquema se da la gestión contigua basada en
particiones dinámicas
◦ Cada vez que se crea un proceso el SO busca un hueco de tamaño suficiente
para el mapa.
◦ El SO reserva la parte del hueco necesaria para crear en ella el mapa inicial
del proceso
◦ Es necesario que el procesador tenga dos registros de propósito especial
para tratar las direcciones que generen los programas.
Esquemas de memoria basados
en asignación contigua (2)
El hardware requerido típicamente son dos registros en el procesador:
◦ Registro límite
◦ Para comprobar que cada dirección que genere el proceso no es mayor que el valor
almacenado. De ser así se genera una excepción.
◦ Registro base
◦ Una vez comprobado el registro límite, el procesador le sumará el valor de este registro a la
dirección generada por el programa, obteniéndose con ello la dirección física.
Esquemas de memoria basados
en asignación contigua (3)
Gestión del SO
◦ Almacenar en el BCP los registros límite y base del proceso. Y
carga dichos registros cuando se activa un proceso.
◦ Mantiene información sobre el estado de ocupación de la
memoria
◦ Utiliza estructuras de datos que identifican huecos y zonas asignadas
◦ Bajo este esquema se genera fragmentación externa:
◦ Se generan pequeños fragmentos libres entre zonas asignadas.
◦ Posible solución : compactación. Sin embargo, este puede ser un proceso
muy costoso.
Esquemas de memoria basados
en asignación contigua (4)
Políticas de asignación de espacio
◦ Qué hueco usar para satisfacer una petición de memoria.
◦ Posibles políticas:
◦ Mejor ajuste
◦ Asignar el menor hueco con tamaño suficiente
◦ Requiere una lista ordenada por tamaño o buscar en toda la lista
◦ Se generan nuevos espacios libres muy pequeños
◦ Peor ajuste
◦ Asignar el mayor hueco con tamaño suficiente
◦ Requiere una lista ordenada por tamaño o buscar en toda la lista.
◦ Primer ajuste
◦ Asignar el primer hueco con tamaño suficiente.
◦ Suele ser la mejor política
Esquemas de memoria basados
en asignación contigua (5)
Valoración del esquema de asignación contigua
◦ Espacios lógicos independientes
◦ Se logra mediante los registros límite y base
◦ Protección
◦ El uso de los registros límite y base asegura que un proceso no pueda acceder a la
memoria de otros procesos o del sistema operativo.
◦ Compartir memoria.
◦ No es posible
◦ Soporte de las regiones
◦ No existe
◦ Se reserva espacio para huecos
◦ Maximizar rendimiento y mapas grandes
◦ Mal aprovechamiento de memoria por fragmentación externa
◦ No permite memoria virtual
Intercambio
En su momento significó la manera de permitir que los
sistemas de tiempo compartido tuvieran más procesos
de los que caben en la memoria.
En un disco o partición de este (swap) se tiene un
respaldo de la memoria, en lo que respecta a las
imágenes de los procesos.
Cuando no caben en memoria todos los procesos
activos, entonces algún proceso debe ser expulsado
(swap out), pero en algún momento el proceso
expulsado deberá ser reactivado (swap in).
Intercambio (2)
Swap out
◦ Cuando un proceso es expulsado de la memoria su imagen es copiada al
swap.
◦ Los criterios de selección del proceso a expulsar pueden ser diversos:
◦ Dependiendo de la prioridad del proceso.
◦ Preferiblemente un proceso bloqueado
◦ No expulsar si esta activo DMA sobre el mapa del proceso
◦ No es necesario copiar todo el mapa al swap (ni código ni huecos).
Swap in
◦ Cuando existe espacio suficiente en memoria.
◦ Cuando un proceso necesita ser reactivado
◦ Al cumplir cierto tiempo de estar expulsado
◦ En este caso antes del swap in se hace el swap out de otro.
Intercambio (3)
La asignación de espacio en el dispositivo swap tiene
dos alternativas
◦ Preasignación
◦ Al crear el proceso ya se reserva espacio de swap suficiente para
albergarlo.
◦ Sin Preasignación
◦ Sólo se reserva espacio cuando se expulsa el proceso
Usado en sistemas tipo Unix
Una solución más general es el uso de memoria virtual.
Aún cuando se utiliza conjuntamente con la técnica de
intercambio (swaping)
Memoria Virtual
En esta técnica el SO administra la memoria principal y
la memoria secundaria para almacenar información
perteneciente a los procesos.
Memoria Virtual (2)
De forma general se puede decir que el SO transfiere
bloques entre ambas memorias.
◦ De memoria principal a memoria secundaria por expulsión.
◦ De memoria secundaria a memoria principal por demanda.
Los beneficios obtenidos son:
◦ Aumento en el grado de multiprogramación
◦ Permite la ejecución de programas más grandes que la
memoria principal.
Por otro lado, no es adecuada para sistemas de tiempo
real
Memoria Virtual (3)
(Paginación)
Paginación
◦ Surge como un intento para satisfacer los objetivos de la
administración de memoria sofisticando considerablemente el
hardware del procesador y aumentando la cantidad de
información de traducción por proceso.
◦ La unidad básica de trabajo en este esquema es obviamente la
página, la cual corresponde con una zona de memoria
contigua de determinado tamaño (potencias de 2, típicamente
4kb).
◦ El mapa de memoria de cada proceso esta dividido en páginas.
A su vez, la memoria principal esta dividida en marcos de
página (en un determinado momento contiene una página del
proceso).
Memoria Virtual (4)
(Paginación)
Tablas de páginas (TP)
◦ Contiene la información de
dónde residen las páginas de un
programa en ejecución.
◦ Relacionan cada página con el
marco que la contiene.
El MMU usa TP direcciones
lógicas a direcciones físicas.
◦ El procesador tiene un registro
que almacena la dirección de la
TP de un proceso.
Memoria Virtual (5)
(Paginación)
Ejemplo de traducción con tablas de
páginas
Memoria Virtual (6)
(Paginación)
Fragmentación interna en paginación
◦ Se da debido a que cada proceso tiene un número entero de marcos de
página, lo que ocasiona que la memoria asignada sea mayor que la
memoria requerida, por lo tanto puede desperdiciarse parte de un
marco asignado.
Memoria Virtual (7)
(Paginación)
Contenido de un registro de la TP
◦ Número de marco asociado
◦ Información de protección: (R, W, X)
◦ Si se hace una operación no permitida se lanza una excepción
◦ Bit de página válida/inválida
◦ Bit de página accedida
◦ Bit de página modificada
◦ Bit de desactivación de cache
◦ Cuando la entrada corresponde con direcciones de E/S

Tamaño de la página
◦ Es un aspecto importante en el rendimiento de un sistema de paginación.
◦ El tamaño óptimo es un compromiso entre diversos factores
◦ Tamaño pequeño: menor fragmentación y se ajusta mejor al conjunto de trabajo
◦ Tamaño grande: tablas más pequeñas y mejor rendimiento del dispositivo de E/S.
Memoria Virtual (8)
(Paginación)
Gestión del SO
◦ Mantiene una TP por cada proceso
◦ En cada contexto notifica al MMU cuál debe usar a través del registro identificador
del espacio de direccionamiento (RIED).
◦ Mantiene una única TP para el propio SO
◦ Todos los procesos pueden compartir el SO.
◦ Cuando se ejecuta una llamada al sistema, invocada por un proceso, puede
acceder a su propio mapa y al del proceso.
◦ Mantiene una tabla de marcos
◦ Permite conocer cuales marcos están libres y cuales ocupados
◦ Mantiene una tabla de regiones por proceso
◦ Contiene las características de cada región especificando el rango de páginas que
pertenecen a cada región.
◦ Mucho mayor gasto en tablas que con asignación contigua
◦ Es el precio de mucha mayor funcionalidad
Memoria Virtual (9)
(Paginación)
Valoración de la paginación
◦ Espacios lógicos independientes
◦ Se logra mediante TP al corresponder las páginas del mapa memoria del proceso con los
marcos que tiene asignados.
◦ Protección
◦ Se logra mediante TP al restringir la parte de memoria que puede ser accedida por los
procesos.
◦ Compartir memoria
◦ Bajo el control del SO es posible que entradas de TP diferentes correspondan con un mismo
marco.
◦ Soporte de regiones
◦ Bits de protección
◦ Bits de validez
◦ Maximizar rendimiento y mapas grandes
◦ A pesar de la fragmentación interna permite un buen aprovechamiento de la memoria.
◦ Permite esquemas de memoria virtual
Memoria Virtual (10)
(Paginación)
Implementación de la TP
◦ Involucra dos problemas:
◦ Eficiencia
◦ Cada acceso lógico requiere de dos accesos a memoria principal (a la tabla de
páginas + al dato o instrucción)
◦ La solución está en un cache de traducciones (TLB)
◦ Memoria asociativa con información sobre las últimas páginas accedidas.
◦ Puede ser gestionada por Hardware o por Software.
◦ Gasto de almacenamiento
◦ Tablas muy grandes
◦ Ejemplo: páginas de 4K, dir. Lógica de 32 bits y 4 bytes por entrada: Tamaño
de TP 4MB/Proceso (220 * 4).
◦ Una soluciones posibles
◦ Tablas multinivel
◦ Tablas invertidas
Memoria Virtual (11)
(Paginación)
Tabla de páginas multinivel (dos niveles)
◦ Es más flexible
◦ Ocupa el espacio en memoria requerido realmente
◦ Necesita tres accesos a memoria principal para un dato o instrucción.
Memoria Virtual (12)
(Paginación)
Ejemplo de traducción con TP de dos niveles
Memoria Virtual (13)
(Paginación)
Ventajas de tablas multinivel
◦ Si un proceso usa una parte pequeña
de su espacio lógico
◦ Ahorro en espacio para almacenar TPs
◦ Ejemplo: Proceso que usa 12 MB
superiores y 4MB inferiores
◦ 2 niveles, páginas de 4K, dir. lógica de
32 bits (10 bits por nivel) y 4 bytes por
entrada: 1 TP N1 + 4 TP N2 = 5 * 4KB =
20KB (frente a 4MB)
◦ Ventajas adicionales:
◦ Permite compartir TPs intermedias
◦ Sólo requiere que este en memoria la
TP de nivel Superior.
Memoria Virtual (14)
(Segmentación)
Segmentación
◦ Esquema por hw que intenta dar soporte a las regiones
◦ Es una generalización del registro base y límite
◦ Una pareja por cada segmento
◦ Dirección lógica
◦ Número de Segmento + Dirección en el Segmento
◦ MMU usa una tabla de segmentos (TS)
◦ El SO mantiene una TS por proceso
◦ En cada contexto notifica al MMU cuál debe usar
◦ Cada registro en la TS contiene, entre otros:
◦ Registros base y límite
◦ Protección: R, W, X
◦ El segmento es la unidad de asignación y existe fragmentación externa
◦ El SO mantiene información sobre el estado de la memoria
◦ Estructuras de datos que identifiquen huecos y zonas asignadas
Memoria Virtual (15)
(Segmentación)
Valoración de la segmentación: Esquema de traducción con segmentación
◦ Espacios independientes para procesos
◦ Mediante TS
◦ Protección
◦ Mediante TS
◦ Compartir memoria
◦ Compartir segmentos: misma entrada
diferente TS
◦ Soporte de regiones
◦ Bits de protección
◦ Maximizar resultados y mapas grandes
◦ Presenta fragmentación externa
◦ No facilita esquemas de memoria virtual
debido a tamaño variable de segmentos
◦ Esquema apenas usado
Memoria Virtual (16)
(Segmentación Paginada)
Segmentación Paginada
◦ Intenta unir lo mejor de los dos esquemas
◦ Una entrada en TS apunta a una TP para el segmento
◦ Segmentación:
◦ Soporte directo a segmentos
◦ Facilita operaciones sobre regiones
◦ Para establecer protección solo se modifica una entrada de la TS
◦ Para definir la compartición de segmentos una entrada de TS apunta a la misma
TP del segmento
◦ Paginación
◦ Asignación no contigua de segmento
◦ Fragmentación interna
Memoria Virtual (17)
(Segmentación Paginada)
Valoración de la segmentación paginada
o Espacios independientes para procesos Esquema de traducción con Segmentación Paginada
◦ Mediante TS
o Protección
◦ Mediante TS
o Compartir memoria
◦ Compartir segmentos: mismas entradas
diferentes TS
o Soporte de regiones
◦ Bits de protección

Maximizar rendimiento y mapas grandes


o Permite esquemas de memoria virtual

Comparado con la paginación


o Facilita al SO gestión de regiones pero requiere
hw más complejo
Memoria Virtual (18)
Paginación por demanda
◦ Segmentación pura no adecuada para memoria virtual
◦ Tamaño de segmentos variable
◦ Paginación y segmentación paginada sí lo son:
◦ Los bloque transferidos son páginas
◦ Memoria virtual + paginación = paginación por demanda.
◦ Estrategia de implementación: uso de bit de validez.
◦ Si la página no reside se marca como no válida.
◦ En acceso: Excepción de fallo de página
◦ El SO trae la página correspondiente de memoria secundaria
◦ El SO debe diferenciar entre una página no residente y página no válida
◦ Prepaginación: traer páginas por anticipado (no por demanda)
◦ En fallo de página se traen otras páginas que posiblemente necesite el proceso
◦ Beneficiosa si se acierta en la predicción
Memoria Virtual (19)
Tratamiento de fallo de página
◦ Tratamiento de la excepción
◦ Si la dirección es inválida se aborta el proceso o se le manda una señal.
◦ Si no hay ningún marco libre (consulta T. marcos)
◦ Selecciona una victima (Aplica un algoritmo de reemplazo)
◦ Si la página fue modificada, entonces, se guarda en memoria secundaria
◦ Si hay marco libre
◦ Se escribe la página sobre el marco
◦ Se marca la entrada de la página como válida
◦ El marco se establece como ocupado en TM sin no lo estaba
◦ Un fallo de página puede implicar dos accesos a disco
Memoria Virtual (20)
Políticas de administración de la memoria virtual
◦ Política de reemplazo
◦ ¿Qué página reemplazar si hay fallo y no hay marco libre?
◦ Reemplazo local
◦ Solo se usan marcos asignados al proceso que causa el fallo
◦ Reemplazo global
◦ Se utiliza cualquier marco
◦ Política de asignación de espacio a los procesos
◦ ¿Cómo se reparten los marcos entre los proceso?
◦ Asignación fija o asignación dinámica
Memoria Virtual (21)
Algoritmos de reemplazo
◦ Objetivo: minimizar la tasa de fallos de página
◦ Cada algoritmo tiene su versión local y global
◦ Algoritmos más comunes:
◦ Óptimo
◦ FIFO
◦ Reloj
◦ LRU
Memoria Virtual (22)
Algoritmo óptimo
◦ Criterio: Página residente que tardará más en accederse.
◦ Irrealizable
◦ Interés para estudios analíticos y comparativos.
◦ Versiones local y global
Algoritmo FIFO
◦ Criterio: página que lleva más tiempo residente
◦ Fácil implementáción
◦ Páginas residentes en orden FIFO (se expulsa la primera)
◦ No requiere el bit de página accedida
◦ No es una buena estrategia
◦ Página que lleva mucho tiempo residente puede seguir accediéndose frecuentemente.
◦ Su criterio no se basa en el uso de la página
◦ Anomalía de Belady: (entre más marcos más fallas)
Memoria Virtual (23)
Algoritmo del reloj
◦ FIFO + uso del bit de referencia de página accedida (Ref).
◦ Criterio:
◦ Si página elegida por FIFO no tiene activo Ref
◦ Es la página expulsada
◦ Si la página si tiene activo Ref se le da una segunda oportunidad
◦ Se desactiva Ref
◦ Se pone la página al final del FIFO
◦ Se aplica el criterio a la siguiente página
◦ Se puede implementar orden FIFO como lista circular con una referencia a
la primera página de la lista
◦ Se visualiza como un reloj donde la referencia a la primera página es la aguja del
reloj.
Memoria Virtual (24)
Algoritmo LRU
◦ Criterio: Página residente menos recientemente usada.
◦ Por proximidad de referencias
◦ Pasado reciente condiciona futuro próximo
◦ Sutileza
◦ En su versión global: menos recientemente usada en el tiempo lógico de
cada proceso.
◦ Difícil implementación estricta (hay aproximaciones)
◦ Necesitaría de una MMU específica y en general hardware de propósito
especial
Memoria Virtual (25)
Buffering de páginas
◦ El peor caso en tratamiento de fallas es 2 accesos a dispositivo.
◦ La alternativa viable es mantener una reserva de marcos libres para que en
un fallo de página siempre se usa un marco libre.
◦ La estrategia es:
◦ Si el número de marcos libres < umbral
◦ Activar demonio de paginación que aplique repetidamente un algoritmo de reemplazo
◦ Páginas no modificadas pasan a la lista de marcos libres
◦ Páginas modificadas pasan a la lista de marcos modificados (cuando se escriban a disco
pasan a lista de libres).
◦ Si se referencia una página mientras esta en listas:
◦ Fallo de página la recupera directamente de la lista
◦ Provoca un mejor comportamiento de algoritmos “malos”
Memoria Virtual (26)
Estrategia de asignación dinámica
◦ El número de marcos varia dependiendo del comportamiento
del proceso y posiblemente de los otros procesos.
◦ Asignación dinámica con reemplazo local
◦ El proceso va aumentando o disminuyendo su conjunto residente
dependiendo de su comportamiento.
◦ Comportamiento relativamente predecible.
◦ Asignación dinámica con reemplazo global
◦ Los procesos se quitan las páginas entre ellos
◦ Comportamiento difícilmente predecible
Memoria Virtual (27)
Hiperpaginación
◦ Tasa excesiva de fallos de página de un proceso o en el sistema
◦ Con asignación fija se da hiperpaginación en el proceso
◦ Cuando el número de marcos asignados no es suficiente
◦ Provoca un incremento en el tiempo de ejecución del proceso.
◦ Con asignación variable se da hiperpaginación en el sistema
◦ Cuando el número de marcos en el sistema no son suficientes para albergar el
conjunto de trabajo de todos los procesos.
 La utilización del procesador cae
drásticamente puesto que se incrementa
el tiempo que se dedica al tratamiento de
fallos de página.
 Cuando esto ocurre se deben suspender
uno o varios procesos y liberar sus
páginas.
Memoria Virtual (28)
Solución a la hiperpaginación
◦ Se debe tener un control de carga para:
◦ Disminuir el grado de multiprogramación
◦ Suspender 1 o más procesos liberando sus páginas.
◦ Algunas políticas del control de carga son:
◦ Estrategia del conjunto de trabajo
◦ Intenta conocer el conjunto de páginas usadas por el proceso en las últimas N referencias.
◦ Si el trabajo decrece se liberan macros
◦ Si el trabajo crece se asignan macros
◦ Si no hay disponibles: suspender proceso(s).
◦ Se reactivan cuando hay marcos suficientes
◦ Implementación estricta difícil.
◦ Estrategia basada en frecuencia de fallos
◦ Si la tasa es menor a un cierto límite inferior se liberan marcos aplicando un algoritmo de
reemplazo
◦ Si la tasa es mayor a un cierto límite superior se asignan nuevos marcos, si no los hay se
suspende un proceso

También podría gustarte