8. Memoria Virtual

Anuncio
ISI – Sistemas Operativos – Resumen Capitulo 8
8. Memoria Virtual
Permite la ejecución de procesos que pueden no estar completamente en memoria. Presenta la
ventaja de que los programas pueden ser mayores que la memoria física. Separa la memoria
lógica de la memoria física. No es fácil de implantar, y puede reducir considerablemente el
rendimiento si no se emplea con cuidado. La capacidad de ejecutar un programa que se
encuentra parcialmente en memoria tendría varias ventajas:
1. Un programa ya no estaría restringido por la cantidad de memoria física disponible.
2. Como cada programa de usuario ocuparía menos memoria física, podrían ejecutarse más
programas al mismo tiempo, aumentando la utilización de la CPU y la productividad, pero
sin incrementar el tiempo de respuesta o el tiempo de retorno.
3. Se requeriría menos E/S para cargar o intercambiar cada uno de los programas de usuario,
por lo que se ejecutarían más rápido.
Se implanta, generalmente, mediante la paginación por demanda, aunque la segmentación por
demanda también puede usarse para proporcionar memoria virtual.
Paginación por demanda: Los procesos residen en memoria secundaria (disco). Cuando los
queremos ejecutar, los metemos en la memoria. Cuando un proceso se reincorpora por
intercambio, el paginador adivina qué páginas usará el proceso, en vez de intercambiar un
proceso, el paginador sólo trae a memoria las páginas que se necesiten, evitando colocar en
memoria páginas que no se utilizaran, reduciendo el tiempo de intercambio y la cantidad de
memoria física necesaria. Las páginas en la tabla de páginas tienen un bit válido-inválido que
indica si éstas están en memoria o en disco (respectivamente). Si no se trae una página a
memoria hasta que se necesite se denomina paginación por demanda pura.
Pasos para manejar una falla de página:
3
la página está
en el almacenamiento
auxiliar
sistema
operativo
2
trampa
1
referencia
cargar
M
6
reiniciar
instrucción
i
tabla de
páginas
5
restablecer
tabla de
páginas
4
marco
libre
traer
página que
falta
memoria
física
Hay que tener en cuenta que algunas instrucciones pueden modificar un valor de memoria y
luego al querer modificar otro provocar una falla de pagina por lo reiniciar la instrucción no
seria lo apropiado. Esto se puede resolver de dos maneras: verificar si las páginas se encuentran
en memoria antes de ejecutar la instrucción o guardar los valores anteriores en registros
temporales. También pueden producirse otro
Rendimiento de la Paginación por demanda:
Tiempo de acceso efectivo para una memoria paginada:
TAE=(1-p) * am + p * tiempo de falla de pagina
ISI – Sistemas Operativos – Resumen Capitulo 8
Una falla de página (cuando un proceso hace referencia una página que no se incorporó a la
memoria) desencadena la siguiente secuencia:
1. El hardware de paginación traduce la dirección mediante la tabla de páginas, y observa que
el valor del bit es “inválido”.
2. Genera una trampa para el SO (error de dirección no válida, pero en realidad es el resultado
de la falla del SO al no transferir a memoria una parte válida para el proceso).
3. Guardar los registros de usuario y el estado del proceso.
4. Determinar si la interrupción fue una falla de página.
5. Verificar que la referencia a la página haya sido legal y determinar la ubicación de la página
en el disco.
6. Buscar un marco libre:
a) Si hay un marco libre, utilizarlo.
1) Esperar en la cola del dispositivo hasta que se atienda la solicitud de lectura.
2) Esperar durante el tiempo de posicionamiento o de latencia (o ambos) del
dispositivo
3) Comenzar la transferencia de la página al marco libre
b) De lo contrario, utilizar un algoritmo de reemplazo de página a fin de seleccionar un
marco víctima.
c) Escribir la página víctima en disco (si fue modificada)
1) Esperar en la cola del dispositivo hasta que se atienda la solicitud de escritura.
2) Esperar durante el tiempo de posicionamiento o de latencia (o ambos) del
dispositivo
3) Comenzar la transferencia de la pagina victima a marco libre
4) Durante la espera asignar la UCP a otro usuario
5) Interrupción del disco
6) Guardar los registros y el estado del proceso del otro usuario
7) Determinar si la interrupción provino de disco
8) Esperar que la UCP se asigne nuevamente a este proceso
9) Reestablecer los registros de usuario, estado de proceso y corregir bit I-V de la
tabla de paginas
10) Hacer a)
7. Durante la espera asignar la UCP a otro usuario
8. Interrupción del disco
9. Guardar los registros y el estado del proceso del otro usuario
10. Determinar si la interrupción provino de disco
11. Corregir la tabla de paginas y las demás tablas para indicar que la pagina deseada se
encuentra en memoria
12. Esperar que la UCP se asigne nuevamente a este proceso
13. Reestablecer los registros de usuario, estado de proceso y la nueva tabla de paginas, y
reanudar la instrucción interrumpida.
Resumiendo:
1. Servir interrupción de fallo de pagina
2. Leer pagina
3. Reanudar proceso
ISI – Sistemas Operativos – Resumen Capitulo 8
Reemplazo de páginas:
m a rc o
vá lid o -in vá lid o b it
1
ƒ
f
0
v i
2
f
v
4
ta b la d e
p á g in a s
s a c a r la
p á g in a
víc tim a
víc tim a
3
c a m b ia r a in vá lid o
in tro d u c ir
la p á g in a
deseada
a ju s ta r la ta b la d e
p á g in a s p a ra
in c lu ir la n u e va
m e m o ria
fís ic a
Algoritmos de reemplazo de páginas: se utilizan cuando se requiere un reemplazo de páginas
para decidir que marcos intercambiar. Queremos el que presente la menor tasa de fallas de
página.
„ Algoritmo FIFO: Asocia a cada página el instante en el cual se trajo a memoria, cuando hay
que reemplazar una página, se elige la más antigua. Se construye una cola FIFO para su
implementación. Es fácil de comprender y programar, pero su rendimiento no siempre es
bueno. Presenta la Anomalía de Belady.
„ Algoritmo óptimo - OPT - MIN: Consiste en reemplazar la página que no se usar durante el
mayor período de tiempo. Tiene la menor tasa de fallas de página de todos los algoritmos y
nunca presentar la anomalía de Belady. Es difícil implantarlo, ya que requiere un conocimiento futuro de la serie de referencias. Por lo tanto, se utiliza para estudios comparativos.
„ Algoritmo LRU: es una aproximación al algoritmo óptimo. Reemplaza la página que no se
ha utilizado durante el mayor período de tiempo. Asocia a cada página el instante en que se
usó por última vez. No presenta la anomalía de Belady. Son factibles dos implantaciones:
• Con un contador. A cada entrada de la tabla de páginas se le asocia un registro de
instante de uso y agregamos a la UCP un contador que se incrementa con cada referencia
a memoria.
• Con una pila. Consiste en mantener una pila de números de página. Cuando se hace
referencia a una página, se saca de la pila y se coloca en la parte superior. De esta manera,
en la parte inferior, se encuentran las páginas menos recientemente usada. Se implanta
con una lista doblemente ligada. Hay un apuntador al fondo de la pila.
„ Algoritmos aproximados al LRU: se basan en bits que se añaden a la tabla de págs que
indican que págs están siendo usadas (1) y cuáles no (0).
• Algoritmo de bits adicionales de referencia: se anotan los bits de referencia a intervalos
regulares por lo que puedo identificar los accesos por periodos el menor numero será la
candidata. Si hay coincidencia, desempato por FIFO o saco todas.
• Algoritmo de segunda oportunidad: si el bit de referencia es 1, lo ponemos en 0 y
buscamos otra página para reemplazar. Se puede implementar con una cola circular. Un
apuntador indica cual es la siguiente página con bit de referencia a 0; conforme avanza,
borra los bits de referencia. En el peor de los casos, cuando todos los bits estén en 1, el
apuntador pondrá a todos los bits en 0 y luego se transformara en FIFO.
• Algoritmo LFU (menos frecuentemente usada): mantiene un contador con el número de
referencias a una página. Se cambia la página con menos recuento. Se puede desplazar los
recuentos un bit a la derecha a intervalos regulares para evitar que una pagina que se
referencia mucho pero ahora ya no se usa quede en memoria.
• Algoritmo MFU (más frecuentemente usada): se basa en que la página con el menor
recuento probablemente acaba de llegar y aún tiene que usarse.
• Algoritmos adicionales: se toma un par ordenado con (bit de referencia, bit de
modificación):
◊ (0,0) ni usada ni modificada.
◊ (0,1) no usada (recientemente), pero modificada.
ISI – Sistemas Operativos – Resumen Capitulo 8
◊ (1,0) usada pero limpia (no modificada).
◊ (l,1) usada y modificada.
Reemplazamos la página en la clase inferior no vacía. Desempata el FIFO o el azar.
„ Algoritmos ad hoc: antes de sacar la página a reemplazar, su reemplazante se pasa a un
marco libre del depósito (mantiene un depósito de marcos libres). Esto permite que el
proceso se reanude lo más rápido posible. Cuando se saca la victima su marco se agrega al
depósito.
También podemos aprovechar los momentos en que el dispositivo de paginación este libre
para ir actualizando las paginas modificadas a disco.
Se puede recordar que pagina se encuentra en el deposito para luego buscar primero ahí.
Anomalía de Belady: refleja que, para algunos algoritmos de reemplazo de páginas, la tasa de
fallas de páginas puede aumentar al incrementarse el número de marcos asignados. Deberíamos
esperar que al proporcionar más memoria para un proceso su rendimiento mejorase.
Asignación de marcos: el SO siempre asigna cualquier marco libre a un proceso, pero existe
un numero mínimo de marcos a asignarse inicialmente. Este número esta definido por la
arquitectura del computador y esta directamente relacionado con el nivel de indireccion de la
misma (debemos tener marcos para la instrucción y para todas las direcciones que esta
referencie).
Algoritmos de asignación: Una estrategia de la asignación consiste en otorgar igual cantidad de
marcos a cada proceso (asignación equitativa). O la asignación proporcional, que toma en
cuenta la cantidad de páginas de cada proceso. marcas a asignar = (marcos del proceso / marcos
de todos los procesos) * marcos disponibles
Hiperpaginación (Thrashing): ocurre cuando un proceso emplea más tiempo paginando que
ejecutando. Causas: Utilización de un algoritmo global de reemplazo (si utilizo uno local la
limito a ese proceso) y asignación estática del CPT.
Supongamos que empleamos un algoritmo global de reemplazo de páginas. Suponga que un
proceso necesita más marcos. Comienza a tomar páginas de otro proceso. Lo que genera que
estos procesos a su vez fallen y así... Todos estos procesos se colocan en la cola de espera del
dispositivo y la cola de procesos listos se vacía. El ONI advierte esto y agrega un nuevo proceso
a la mezcla el cual sigue el mismo comportamiento que los otros. Entonces el ONI trata de
incrementar aun más el nivel de multiprogramación. Ha comenzado la hiperpaginacion y se
desploma la productividad del sistema. La tasa de falla de páginas aumenta tremendamente y,
como resultado, se incrementa el tiempo de acceso efectivo a memoria. No se efectúa ningún
trabajo porque todos los procesos se dedican a paginar.
Localidad o vecindad: conjunto de páginas que se utilizan conjuntamente. Un proceso, durante
su ejecución, pasa de una localidad a otra. Están definidas por la estructura del programa y sus
estructuras de datos. si asignamos menos marcos que el tamaño de la localidad, el proceso
entrará en hiperpaginación.
Area Activa: Conjunto de página de mayor demanda. Se utiliza un parámetro ∆
(delta). Se analiza las ∆ referencias mas recientes y con esto se obtiene una
aproximación de la localida. Lo acertado de la aproximación depende del ∆ elegido. El
sistema utiliza el tamaño del área activa para asignar el CPT a cada trabajo. Si la
demanda de marcos es mayor que la suma de todos los CPT se producirá
hiperpaginacion. Si pasa esto el sistema selecciona un proceso y lo suspende. La
estrategia de área activa evita la hiperpaginacion manteniendo a la vez el nivel de
multiprogramación lo mas alto posible. De esta manera optimiza la utilización de la
ISI – Sistemas Operativos – Resumen Capitulo 8
CPU. El seguimiento del área activa se implementa mediante un bit de referencia y
interrupciones a intervalos fijos (∆) de un cronometro
Frecuencia de Fallas de Páginas y ratio de repaginación: Estos dos valores se analizan para
evitar la hiperpaginacion. Si se da un elevado número de fallas de página. Se analiza el ratio de
repaginación si es alto se asigna un nuevo marco al proceso ya que indica que la localidad esta
creciendo de lo contrario la localidad esta cambiando por lo que no es necesario asignarle un
nuevo marco
Asignación global: un proceso selecciona un marco a reemplazar de todo el conjunto de
marcos, incluso de otro proceso (incluso pudiendo comprometer a fallas en este). Un proceso no
puede controlar su FFP.
Asignación local: la selección está limitada a los marcos de un proceso; de esta manera un
proceso sólo se ve afectado por él mismo en cuanto a la paginación. Ayuda a evitar
hiperpaginacion
Prepaginación: consiste en traer a memoria al mismo tiempo todas las páginas que se
necesitarán.
Tamaño de Páginas:
• Grande: (son las que se usan en la actualidad)
„ Disminuir tamaño de la tabla de págs.
„ Minimizar el tiempo de E/S.
„ Minimizar el número de fallas de páginas.
• Pequeña:
„ Minimizar fragmentación interna.
„ Representa menos E/S y menos memoria total asignada.
„ Mejora la localidad.
Fijación de Páginas: se utiliza para fijar en memoria aquellas páginas que no pueden ser
víctimas de reemplazos. Se asocia un bit de fijación a cada marco. Pueden contener: procesos
del SO, páginas de usuario en espera de finalización de E/S, página de usuario recién
incorporada y todavía no utilizada, etc.
Tabla de páginas invertida: para cada página de la memoria tiene una entrada y se asocia en
ella la dirección virtual de la página almacenada en esa localidad en memoria real (proceso,
pagina, marco), de manera que sólo hay una tabla en todo el sistema y sólo tiene una entrada
para cada página de memoria física (y esta ordenada por dirección de memoria física). Ocasiona
problemas en el compartimiento de código. La tabla que indica la ubicación en disco se
encuentra en el disco. Aumenta tiempo para buscar una página. También hay registros
asociativos.
Segmentación por demanda: El SO asigna la memoria por segmentos y los controla por medio
de descriptores de segmento, que incluyen información sobre el tamaño, protecciones y
ubicación del segmento. Un proceso no requiere que todos sus segmentos se encuentren en
memoria para poder ejecutarse. En vez de esto, el descriptor de segmento contiene un bit de
validez para cada segmento, el cual indica si se encuentra actualmente en memoria. Cuando un
proceso direcciona un segmento que contiene datos o código, el hard examina este bit de
validez. Si el segmento está en memoria principal, el acceso continúa sin problemas; en caso
contrario se genera una trampa al SO (falla de segmento), igual que sucede en las
implantaciones de la paginación por demanda. Las rutinas de administración de memoria
primero determinan se hay espacio suficiente para el segmento, sino se efectúa una
compactación, si luego de la compactación el espacio disponible es escaso se escoge un
segmento para escribir en almacenamiento secundario (hay un bit de acceso por cada segmento
y se usa el algoritmo de segunda oportunidad, también hay bit de fijación) e incorpora todo el
segmento requerido (si el segmento sigue sin entrar en memoria se repite el procedimiento).
ISI – Sistemas Operativos – Resumen Capitulo 8
Luego continúa la instrucción interrumpida (la que causó la falla de segmento). Se debe resaltar
que la segmentación por demanda requiere un considerable tiempo de procesamiento adicional,
por lo que ésta no es un medio óptimo para aprovechar al máximo los recursos de un sistema de
computación. Sin embargo, en un hardware menos complejo la única alternativa es que no haya
memoria virtual. Debido a los problemas que se presentan en los sistemas que carecen de
memoria virtual, la segmentación por demanda es un compromiso razonable de funcionalidad
dadas las restricciones del hardware que imposibilitan la paginación por demanda.
Descargar