Está en la página 1de 57

Sistemas Operativos Tema 9.

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

Programas reales en muchos casos no se necesita todo el programa


q q

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

Qu partes cargar Cundo cargarlas Dnde ubicarlas

Memoria virtual: esquema general

Paginacin por demanda (demand paging)


n

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

Paginacin por demanda


n

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

Paginacin por demanda

10

Paginacin por demanda: la idea

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

Gestin de un fallo de pgina

13

Explicacin del diagrama anterior


n n n

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

Explicacin del diagrama anterior (2)


n n

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

Paginacin por demanda


n

Caso extremo:
q

Paginacin por demanda pura


n

Nunca se trae una pgina a memoria si no se necesita

Ejecucin de una instruccin


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

Paginacin por demanda: ventajas


n

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

Necesidad de poder reiniciar una instruccin despus de un fallo de pgina


n

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

Algoritmos de gestin de memoria virtual


n

Para la implementacin de la paginacin por demanda, el SO debe implementar:


q

Algoritmo de asignacin de marcos


n

Si tenemos varios procesos en memoria es necesario decidir cuantos marcos se asignan a cada uno Proceso bsico
q q q

Algoritmo de reemplazo de pginas


n

1.- Atender la interrupcin de fallo de pgina 2.- Traer la pgina a memoria y colocarla en un marco libre 3.- Reiniciar el proceso

Y si no hay marcos libres? Reemplazo de pginas

20

Algoritmo de reemplazo
n

Modificacin en el proceso bsico:


q

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

Algoritmos de reemplazo: cmo evaluarlos


n n

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

Ejemplo de cadena de referencias


0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105 (decimal) Si el tamao de pgina es de 100 bytes, se reduce a la siguiente cadena de referencias 1,4,1,6,1,6,1,6,1,6,1

24

Algunos algoritmos de reemplazo


n

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

Algoritmo de reemplazo ptimo


n

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

Ejemplo: ptimo o mnimo

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

Contadores (marca de tiempo) Pila

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

Varios bits de referencia


n

4.1. Algoritmo con bits de referencia adicionales


q

Es posible obtener informacin de ordenamiento adicional si registramos los bits de referencia a intervalos adicionales Por ej.: byte histrico
n n n

11000100 01110111 Se us ms recientemente LRU: pgina con el nmero ms bajo

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

Algoritmo 2 oportunidad o del reloj


n

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

Algoritmo 2 oportunidad o del reloj

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

Algoritmos de conteo: LFU, MFU


n

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

Problema: se pueden mantener pginas viejas a las que no se accede

38

Algoritmos de reemplazo: resumen


Problemas FIFO Optimo LRU Aprox. LRU con bits referencia Aprox. LRU de 2 oportunidad Aprox. LRU de 2 oportunidad mejorado LFU Selecciona la pgina que menos tiempo se tarda en reemplazar y que se ha utilizado menos recientemente Se necesitan varias batidas en la lista circular El peor resultado (mayor tasa de fallos de pgina) El mejor resultado (menor tasa de fallos de pgina) Anomala de Belady No implementable Demasiada informacin + hardware El SO debe interrumpir y desplazar los bits referencia Contador (timestamp) en TP o pila Bits de referencia en TP Bit de referencia en TP + lista circular Bit de referencia en TP + lista circular Hardware y/o ED necesarios Lista encadenada de pginas

La ltimas pginas introducidas recientemente estn continuamente reemplazndose Las pginas mas populares se reemplazan

Contador en TP

MFU

Contador en TP

39

Campos en la tablas de pginas


Memoria Paginada Marco Permisos Validez Sucio Bloqueo FIFO LRU LRU con bits referencia obligatorio (varios bits) opcional obligatorio obligatorio obligatorio opcional Memoria Virtual obligatorio opcional obligatorio opcional opcional LRU 2 oportun. obligatorio (1! bit) LRU 2 oportun. mejorado obligatorio (1! bit) LFU MFU

Bits de referencia Contador (timestamp) Contador accesos

40

Paginacin por demanda: mejoras en el reemplazo


n

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

Asignacin de marcos a los procesos


n

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

El reemplazo global generalmente aumenta el rendimiento del sistema y es el mtodo ms utilizado

43

Hiperpaginacin y rea activa


n

Primeros sistemas de paginacin


n n

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

Hiperpaginacin y rea activa


n

Si el grado de multiprogramacin es excesivo, el sistema puede estar ms tiempo paginando que haciendo trabajo productivo (hiperpaginacin) cmo evitarla?
q

Polticas de reemplazo local


n

la hiperpaginacin de un proceso puede afectar al resto

Concediendo memoria segn las necesidades reales (localidades, rea activa...)

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

rea activa (working set)


n n

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

WS(t, ) = pginas accedidas entre t y t-

Si tiene el tamao adecuado, es una fiel aproximacin de la localidad actual

47

rea activa

48

rea activa: cmo aplicarla en la gestin de memoria virtual


n

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

Cmo detectar las reas activas?


n n

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

Frecuencia de fallos de pgina (PFF)


n n n n

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

Tamao de pgina ptimo


n

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

Influencia de la estructura del cdigo


n

Estructura de los programas


La forma en que se accede a los datos q Las estructuras de datos que se emplean q Cmo se estructura el cdigo (el compilador y el cargador tambin pueden tener efecto sobre la paginacin) q El lenguaje de programacin (la localidad es mejor en lenguajes con uso restringido de punteros) Influyen en el rendimiento de la memoria virtual
q

54

Otras consideraciones
n

Interbloqueo de E/S cuando se emplea DMA


q q

E/S pendiente en una pgina reemplazada Soluciones:


n n

Bferes en memoria del SO Permitir fijar pginas en memoria (bit de bloqueo)

Tiempo real: la m.v. es nociva en un sistema de t.r.

55

Otras tcnicas: segmentacin por demanda


n

Segmentacin por demanda


q q

La unidad de gestin es el segmento Ej: OS/2 en el Intel 80286

56

Memoria virtual: sumario


n

Estrategias
Paginacin bajo demanda Algoritmos de reemplazo de pginas
FIFO OPT LRU LRU bits adicionales LRU 2 oport. LRU 2 oport. mejorado LFU MFU

Algoritmos de asignacin de marcos

Reserva de marcos Reemplazo local / global

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

También podría gustarte