Documentos de Académico
Documentos de Profesional
Documentos de Cultura
So 09 Memoria Virtual
So 09 Memoria Virtual
Memoria virtual
1998-2012 Jos Miguel Santos Alexis Quesada Francisco Santana Beln Esteban
1
Memoria virtual
n
n n n n
La memoria virtual es una tcnica que permite la ejecucin de procesos parcialmente cargados en memoria principal Los programas pueden ser ms grandes que la memoria fsica Se utiliza el disco como almacn secundario de procesos Libera al programador de la preocupacin de que sus programas quepan en memoria La idea es mantener en memoria principal slo los fragmentos de cada proceso que se estn utilizando
Memoria virtual
n
Cdigo que maneja condiciones de error poco comunes (casi nunca se ejecuta) En muchos casos se reserva ms memoria de la necesaria (vectores, tablas, etc...) Opciones y funciones del programa que se usan con muy poca frecuencia (copias de seguridad J, listados especficos, etc...)
El sistema operativo selecciona automticamente qu fragmentos del proceso residen en memoria principal Ojo, todo esto es bastante complejo de resolver
3
Memoria virtual
n
Si empleamos m.v., con poca memoria fsica se pueden atender grandes demandas de memoria:
q
el programador no tiene que preocuparse tanto de la escasez de memoria eliminamos la necesidad de tcnicas como los recubrimientos (overlays) cuya responsabilidad recae en el programador caben ms procesos simultneamente en la memoria fsica -> aumenta la productividad de la CPU
Memoria virtual
n
Riesgo: si escogemos mal los fragmentos en memoria principal, tendremos que recurrir al disco con frecuencia La m.v. funciona porque los programas cumplen una fuerte localidad: los siguientes accesos a memoria suelen estar cerca de los anteriores
Memoria virtual
n
Por tanto, con m.v. los procesos se cargan parcialmente en memoria real, siendo el SO el que lleva a cabo toda la gestin del espacio de forma transparente al programador El SO decide:
q q q
Tcnica ms habitual para implementar memoria virtual Combinar paginacin con intercambio (swap)
q q
En lugar de intercambiar un proceso entero, ahora slo intercambiamos algunas pginas Ideal:
n
Cuando un proceso se va a traer a memoria, el paginador adivine cuales son las paginas que va a usar De esta forma, en lugar de traer a memoria todo el proceso, el paginador slo trae las pginas necesarias De esta forma se evita leer y colocar en la memoria pginas que no se usan, reduciendo de esta forma el tiempo de intercambio y la cantidad de memoria fsica requerida
Si no tenemos todas las pginas en memoria, cuando se referencia a una pgina concreta, Cmo saber si est en memoria?
q
Necesario distinguir entre pginas vlidas (en memoria principal) y no vlidas (slo en disco) Las pginas vlidas/no vlidas se marcan en la tabla de pginas por medio de un bit de validez
10
SI ADIVINAMOS CORRECTAMENTE Y TRAEMOS A LA MEMORIA SOLO LAS PAGINAS QUE SE NECESITAN, EL PROCESO SE EJECUTARA EXACTAMENTE IGUAL QUE SI HUBIERAMOS TRAIDO TODAS LAS PAGINAS
11
Fallo de pgina
n
Si se intenta acceder a una pgina no vlida (bit de invalidez activado), el hardware genera una excepcin llamada fallo de pgina (page fault) El fallo de pgina provoca que el s.o. recupere del disco (swap area) la pgina requerida. Se actualiza la tabla de pginas y se reintenta la instruccin que ocasion el fallo
12
13
1.- Acceso a la tabla de pginas donde se observa que el bit de validez indica que no est en memoria => Page _Fault 2.- Guardar los registros del usuario y el estado del proceso 3.- Determinar que la interrupcin fue un fallo de pgina (vector de interrupciones) 4.- Verificar que la referencia a la pgina fue vlida (el SO consulta una tabla interna, que usualmente se guarda con el BCP del proceso). Si la referencia no es vlida, se termina el proceso. Si era vlida pero todava no se ha trado esa pgina, se determina la posicin de la pgina en el disco (informacin que tambin estar en el BCP) y procedemos a traerla. 5.- Encontramos un marco libre y planificamos una operacin de disco para leer la pgina deseada y colocarla en el marco recin asignado 6.- Durante la espera, asignar la CPU a algn otro usuario (opcional)
14
n n
n n
7.- Interrupcin del disco (E/S terminada) 8.- Guardar los registros y el estado de proceso del otro usuario (si se ejecut el paso 6) 9.- Determinar que la interrupcin provino del disco 10.- Corregir la tabla interna que se guarda junto con el proceso y la tabla de pginas, de modo que indiquen que la pgina ya est en memoria 11.- Esperar que la CPU se asigne otra vez a este proceso 12.- Restaurar los registros de usuario, el estado del proceso y la nueva tabla de pginas, y reanudar la instruccin interrumpida
15
Caso extremo:
q
Puede generar ms de un fallo de pgina (una pgina para la instruccin y muchas para los datos) Problema: rendimiento disminuye considerablemente al aumentar el n de fallos de pgina
Sin embargo, la localidad en los programas hace que el rendimiento de la paginacin por demanda sea razonable
16
Los programadores disponen de un espacio de memoria mayor que las disponibilidades de memoria real del sistema Mejora el rendimiento general del sistema
q
Mejora el uso de la memoria, mejorando el grado de multiprogramacin y por tanto mejorando la capacidad de planificacin del SO
Pero es importante mantener baja la frecuencia de fallos de pgina, ya que de lo contrario el tiempo de acceso aumentar y frenar drsticamente la ejecucin de los procesos
17
Reanudacin de instrucciones
n
Adems del apoyo hardware especfico necesario, Existe algn otro tipo de restriccin para que esta tcnica se pueda implementar?
q
Ejemplos:
q q
DECREMENTAR reg[1] y BIFURCAR a la direccin Y si el resultado es cero Instruccin MVC del IBM 360
18
Reanudacin de instrucciones
n
n n
Una implicacin arquitectnica importante para poder implementar paginacin por demanda, y en general, memoria virtual es que se puede producir la interrupcin de ciertas instrucciones durante su ejecucin Problemas: reiniciar la instruccin no siempre soluciona el problema Soluciones:
q
Deshacer los efectos parciales de la instruccin interrumpida y reiniciar la instruccin cuando haya sido procesada la excepcin Reanudar la instruccin desde el punto exacto de interrupcin cuando el elemento ausente sea incorporado a memoria Preexaminar las referencias a memoria buscando fallos de pgina antes de comenzar la ejecucin de la instruccin
19
Si tenemos varios procesos en memoria es necesario decidir cuantos marcos se asignan a cada uno Proceso bsico
q q q
1.- Atender la interrupcin de fallo de pgina 2.- Traer la pgina a memoria y colocarla en un marco libre 3.- Reiniciar el proceso
20
Algoritmo de reemplazo
n
Si no hay marco libre, usar un algoritmo de reemplazo de pgina para escoger un marco vctima Escribir la pgina vctima en el disco y actualizar tablas Leer la pgina del disco y colocarla en el marco recin liberado y actualizar tablas Finalmente reiniciar el proceso de usuario
21
Bit de modificacin
n
Problema:
q
Si no hay marcos libres se requieren dos transferencias de pginas Este gasto extra puede reducirse empleando un bit de modificacin o bit sucio
n
El hardware pone a 1 el bit de modificacin de una pgina siempre que se escribe una palabra o byte de la pgina
22
Objetivo: Frecuencia de fallos de pgina sea lo ms baja posible Evaluamos un algoritmo ejecutndolo con una serie especfica de referencias y calculando el nmero de fallos de pgina
q
La serie de referencias las podemos generar forma aleatoria o rastreando la ejecucin de un sistema dado y registrando la direccin de cada referencia a la memoria
Para una serie de referencias determinadas y un algoritmo concreto, determinar el nmero de fallos de pgina requiere conocer el nmero de marcos de los que se dispone en el sistema
23
24
Bsicos
q q q
FIFO OPTIMO LRU least recently used LRU con bits de referencia adicionales LRU de segunda oportunidad o del reloj LRU de segunda oportunidad mejorado LFU less frequently used MFU most frequently used
Aproximaciones LRU
q q q
De conteo
q q
25
Algoritmo FIFO
n
1. FIFO
q q q
Se sustituye la pgina residente que lleve ms tiempo en memoria Fcil de implementar (cola FIFO de pginas) Problema: al no tener en cuenta la historia del uso de una pgina dada, FIFO puede prescindir de pginas a las que se accede con frecuencia Padece la anomala de Belady (fenmeno paradjico consistente en que aumenta el nmero de fallos de pginas cuando se asignan ms pginas reales al proceso) Propiedad de pila: para cualquier punto en la cadena de referencia, el conjunto de pginas en N marcos de pgina es un subconjunto del que se formara en N+1 marcos de pgina
26
Ejemplo: FIFO
27
Efecto Belady
28
2. ptimo
q
q q
Escoger como vctima la pgina que ms tarde en volver a ser accedida Es el algoritmo que presenta la frecuencia de fallos de pgina ms baja de todos No implementable (requiere presciencia) til como referencia de comparacin
29
30
Algoritmo LRU
n
3. LRU: menos recientemente usada q Aproximacin implementable del ptimo q Se asocia a cada pgina el instante en que se us por ltima vez, y en caso de reemplazo se escoge la pgina que tiene ms tiempo sin usarse q Implementacion:
n n
q q
Requiere hardware adicional y es costoso Los sistemas reales implementan aproximaciones a la LRU
31
Ejemplo: LRU
32
Aproximaciones a la LRU
n
4. Aproximacin a LRU q Tanto el reemplazo ptimo como el LRU no padecen la anomala de Belady q Las tcnicas basadas en LRU utilizan un bit de referencia puesto por el hardware q El hardware enciende el bit de referencia de una pgina cada vez que se hace referencia a ella (lectura o escritura) q Examinando este bit no conoceremos el orden de uso, pero s sabemos cules pginas se usaron y cuales no
33
Es posible obtener informacin de ordenamiento adicional si registramos los bits de referencia a intervalos adicionales Por ej.: byte histrico
n n n
No est garantizada la unicidad de dichos nmeros (en caso de igualdad, se podra aplicar FIFO) Si el nmero de bits histricos es cero, es decir, dejamos slo el bit de referencia => Algoritmo de segunda oportunidad
34
4.2. Algoritmo de segunda oportunidad o algoritmo del reloj q FIFO teniendo en cuenta el bit de referencia q Si el valor es cero, reemplazamos la pgina, pero si es 1, le damos una segunda oportunidad, ponemos su bit de referencia a cero y seleccionamos la siguiente pgina FIFO q Una forma de implementar el algoritmo de segunda oportunidad es con una cola circular q = FIFO si todos los bits estn encendidos
35
36
2 oportunidad, mejorado
n
4.3. Algoritmo de segunda oportunidad mejorado q = pero considerando tanto el bit de referencia como el bit de modificacin q Cuatro situaciones: (0,0), (0,1), (1,0), (1,1) q Se reemplaza la primera pgina que encontremos de la clase ms baja q Es posible que se tenga que explorar la cola varias veces entes de encontrar la pgina a reemplazar q Ej: Macintosh
37
5. Algoritmos de conteo
q q
Contador del nmero de referencias 5.1. Algoritmo LFU: menos frecuentemente usadas (cuenta ms baja) son las reemplazadas
n
Problema: pginas que se usaron mucho durante la fase inicial del proceso y luego no se vuelven a usar Solucin: Desplazar las cuentas un bit a la derecha a intervalos regulares Problema serio: pginas tradas recientemente, alta probabilidad de salir (cuenta baja)
5.2. Algoritmo MFU: ms frecuentemente usada (cuenta ms alta) es la reemplazada, para evitar el problema anterior
n
38
La ltimas pginas introducidas recientemente estn continuamente reemplazndose Las pginas mas populares se reemplazan
Contador en TP
MFU
Contador en TP
39
40
Reserva de marcos libres: % de marcos libres para no esperar a que las vctimas se escriban en disco Recordar qu pginas estn en los marcos libres Descargar en disco las pginas modificadas en segundo plano
41
Reserva de marcos
q
Es conveniente definir un sistema de reparto de los marcos a los procesos en ejecucin Todo proceso debera tener una reserva mnima de marcos (depende del repertorio de instrucciones) Cmo asignar los marcos a los procesos?
n n n
Reparto alcuoto Reparto proporcional (por tamao, por prioridad) Reemplazo global o local?
42
Tipos de reemplazo
n
Reemplazo local/global
q
El conjunto de pginas candidatas a sustituir est/no est restringido al proceso que provoca la carencia de pgina Un mismo proceso podra tener un rendimiento muy diferente a causa de circunstancias puramente externas Podra obstaculizar la ejecucin de un proceso al no permitirle aprovechar otras pginas de memoria de poco uso
Reemplazo global
q
Reemplazo local
q
43
n n
SO supervisa la utilizacin de la CPU Si el aprovechamiento es demasiado bajo aumenta el grado de multiprogramacin Supongamos una poltica de reemplazo global Al entrar un nuevo proceso solicitudes de marcos (se quitaran marcos a otros procesos, procesos que a su vez necesitaran mas marcos y los quitaran a otros procesos) Resultado: Aumenta la cola de procesos en el dispositivo de paginacin (el encargado de servir los fallos de pgina) y se va vaciando la cola de preparados Consecuencia: disminuye el aprovechamiento de la CPU y entonces el planificador de CPU aumenta el grado de multiprogramacin, agravando an ms el problema
44
Si el grado de multiprogramacin es excesivo, el sistema puede estar ms tiempo paginando que haciendo trabajo productivo (hiperpaginacin) cmo evitarla?
q
45
Modelo de localidades
n
Se observa que todo proceso trabaja en cada momento con unas zonas de cdigo y datos bien delimitadas: localidad Cuando se salta a otra subrutina, etc., se cambia de localidad Si un proceso tiene asignada su localidad en memoria principal, no ocasiona fallos de pgina
46
Concepto que trata de aproximarse a la localidad actual de un proceso Es el conjunto de pginas con el que ha trabajado un proceso en un pasado reciente (ventana del rea activa) :
q
47
rea activa
48
El SO vigila el rea activa de cada proceso y le asigna un nmero de marcos igual a su tamao Si hay suficientes marcos adicionales, se puede iniciar otro proceso Si la suma de los tamaos de las reas activas aumenta hasta exceder el nmero total de marcos disponibles, el SO seleccionar un proceso para suspenderlo La estrategia del rea activa evita la hiperpaginacin al tiempo que mantiene el grado de multiprogramacin lo ms alto posible
49
Lo difcil del modelo del rea activa es cmo sabe el SO cul es el rea activa de un proceso en cada momento Implementacin q El rea activa se puede estimar utilizando el bit de referencia, de forma similar a la LRU n A intervalos regulares, los bits de referencia de las pginas residentes pueden ser registrados (n de bits histricos) y borrados n De esta forma tenemos una especie de historial de uso
q
Si se descubre que un proceso no tiene pginas suficientes para su rea activa, se le suspende por completo: as se evita la hiperpaginacin
50
Podemos establecer lmites superiores e inferiores para la frecuencia de fallos de pgina deseada Si la PFF de un proceso es muy baja, le quitamos pginas; si es muy alta, le damos ms pginas Si la PFF global aumenta y no hay marcos libres, seleccionamos un proceso y lo suspendemos Los marcos de pgina se repartirn entre los procesos que tengan fallos de pgina muy frecuentes
51
Prepaginacin
n
Prepaginacin: cuando se reanuda un proceso que estaba en swap, traer a memoria principal todas las pginas del rea activa
q
Para cada proceso se guarda tambin la informacin relativa al rea activa La prepaginacin puede ser ventajosa en algunos casos (cuando el costo de la prepaginacin sea menor que el de atender los fallos de pgina correspondientes)
52
La eficiencia de las operaciones de E/S (disco) y el espacio consumido en tablas recomiendan tamaos de pgina grandes La localidad y la fragmentacin recomiendan tamaos de pgina pequeos
53
54
Otras consideraciones
n
55
56
Estrategias
Paginacin bajo demanda Algoritmos de reemplazo de pginas
FIFO OPT LRU LRU bits adicionales LRU 2 oport. LRU 2 oport. mejorado LFU MFU
Mejoras
Reserva de marcos libres Evitar Hiperpaginacin
Reemplazo local Localidades/rea activa Frecuencia de fallos de pgina
Otras consideraciones
Prepaginacin Tamao de pgina Estructura de los programas Interbloqueo de E/S con DMA
57