Tema 9: Memoria virtual - ULPGC

57
Sistemas Operativos Tema 9. Memoria virtual 1 © 1998-2008 José Miguel Santos – Alexis Quesada – Francisco Santana – Belén Esteban

Transcript of Tema 9: Memoria virtual - ULPGC

Page 1: Tema 9: Memoria virtual - ULPGC

Sistemas OperativosTema 9. Memoria virtual

1

© 1998-2008 José Miguel Santos – Alexis Quesada – Francisco Santana –Belén Esteban

Page 2: Tema 9: Memoria virtual - ULPGC

Memoria virtualLa memoria virtual es una técnica que permite la ejecución de procesos parcialmente cargados en memoria principalLos programas pueden ser más grandes que la memoria físicaSe utiliza el disco como almacén secundario de procesosLibera al programador de la preocupación de que sus programas quepan en memoriaLa idea es mantener en memoria principal sólo los fragmentos de cada proceso que se estén utilizando

2

Page 3: Tema 9: Memoria virtual - ULPGC

Memoria virtual

Programas reales en muchos casos no se necesita todo el programa

Código que maneja condiciones de error poco comunes (casi nunca se ejecuta)En muchos casos se reserva más memoria de la necesaria (vectores, tablas, etc...)Opciones y funciones del programa que se usan con muy poca frecuencia (copias de seguridad ☺, listados específicos, etc...)

El sistema operativo selecciona automáticamente qué fragmentos del proceso residen en memoria principal Ojo, todo esto es bastante complejo de resolver

3

Page 4: Tema 9: Memoria virtual - ULPGC

Memoria virtual

Si empleamos m.v., con poca memoria física se pueden atender grandes demandas de memoria:

el programador no tiene que preocuparse tanto de la escasez de memoriaeliminamos la necesidad de técnicas como los recubrimientos (overlays) cuya responsabilidad recae en el programador“caben más procesos simultáneamente en la memoria física” -> aumenta la productividad de la CPU

4

Page 5: Tema 9: Memoria virtual - ULPGC

Memoria virtual

Riesgo: si escogemos mal los fragmentos en memoria principal, tendremos que recurrir al disco con frecuenciaLa m.v. funciona porque los programas cumplen una fuerte localidad: los siguientes accesos a memoria suelen estar cerca de los anteriores

5

Page 6: Tema 9: Memoria virtual - ULPGC

Memoria virtual

Por tanto, con m.v. los procesos se cargan parcialmente en memoria real, siendo el SO el que lleva a cabo toda la gestión del espacio de forma transparente al programadorEl SO decide:

Qué partes cargarCuándo cargarlasDónde ubicarlas

6

Page 7: Tema 9: Memoria virtual - ULPGC

Memoria virtual: esquema general

7

Page 8: Tema 9: Memoria virtual - ULPGC

Paginación por demanda(demand paging)

Técnica más habitual para implementar memoria virtualCombinar paginación con intercambio (swap)

En lugar de intercambiar un proceso entero, ahora sólo intercambiamos algunas páginasIdeal:

Cuando un proceso se va a traer a memoria, el paginador“adivine” cuales son las paginas que va a usarDe esta forma, en lugar de traer a memoria todo el proceso, el paginador sólo trae las páginas necesariasDe esta forma se evita leer y colocar en la memoria páginas que no se usan, reduciendo de esta forma el tiempo de intercambio y la cantidad de memoria física requerida

8

Page 9: Tema 9: Memoria virtual - ULPGC

Paginación por demanda

Si no tenemos todas las páginas en memoria, cuando se referencia a una página concreta, ¿Cómo saber si está en memoria?

Necesario distinguir entre páginas válidas (en memoria principal) y no válidas (sólo en disco)Las páginas válidas/no válidas se marcan en la tabla de páginas por medio de un bit de validez

9

Page 10: Tema 9: Memoria virtual - ULPGC

Paginación por demanda

10

Page 11: Tema 9: Memoria virtual - ULPGC

Paginación por demanda: la idea

SI ADIVINAMOS CORRECTAMENTE Y TRAEMOS A LAMEMORIA SOLO LAS PAGINAS QUE SE NECESITAN,EL PROCESO SE EJECUTARA EXACTAMENTE IGUALQUE SI HUBIERAMOS TRAIDO TODAS LAS PAGINAS

11

Page 12: Tema 9: Memoria virtual - ULPGC

Fallo de página

Si se intenta acceder a una página no válida (bit de invalidez activado), el hardware genera una excepción llamada fallo de página (page fault)El fallo de página provoca que el s.o. recupere del disco (swap area) la página requerida. Se actualiza la tabla de páginas y se reintenta la instrucción que ocasionó el fallo

12

Page 13: Tema 9: Memoria virtual - ULPGC

Gestión de un fallo de página

13

Page 14: Tema 9: Memoria virtual - ULPGC

Explicación del diagrama anterior

1.- Acceso a la tabla de páginas donde se observa que el bit de validez indica que no está en memoria => Page _Fault2.- Guardar los registros del usuario y el estado del proceso3.- Determinar que la interrupción fue un fallo de página (vector de interrupciones)4.- Verificar que la referencia a la página fue válida (el SO consulta una tabla interna, que usualmente se guarda con el BCP del proceso). Si la referencia no es válida, se termina el proceso. Si era válida pero todavía no se ha traído esa página, se determina la posición de la página en el disco (información que también estará en el BCP) y procedemos a traerla.5.- Encontramos un marco libre y planificamos una operación de disco para leer la página deseada y colocarla en el marco recién asignado6.- Durante la espera, asignar la CPU a algún otro usuario (opcional)

14

Page 15: Tema 9: Memoria virtual - ULPGC

Explicación del diagrama anterior (2)

7.- Interrupción 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 interrupción provino del disco10.- Corregir la tabla interna que se guarda junto con el proceso y la tabla de páginas, de modo que indiquen que la página ya está en memoria11.- Esperar que la CPU se asigne otra vez a este proceso12.- Restaurar los registros de usuario, el estado del proceso y la nueva tabla de páginas, y reanudar la instrucción interrumpida

15

Page 16: Tema 9: Memoria virtual - ULPGC

Paginación por demanda

Caso extremo: Paginación por demanda pura

Nunca se trae una página a memoria si no se necesita

Ejecución de una instrucciónPuede generar más de un fallo de página (una página para la instrucción y muchas para los datos)Problema: rendimiento disminuye considerablemente al aumentar el nº de fallos de página

Sin embargo, la localidad en los programas hace que el rendimiento de la paginación por demanda sea razonable

16

Page 17: Tema 9: Memoria virtual - ULPGC

Paginación por demanda: ventajas

Los programadores disponen de un espacio de memoria mayor que las disponibilidades de memoria real del sistemaMejora el rendimiento general del sistema

Mejora el uso de la memoria, mejorando el grado de multiprogramación y por tanto mejorando la capacidad de planificación del SO

Pero es importante mantener baja la frecuencia de fallos de página, ya que de lo contrario el tiempo de acceso aumentará y frenará drásticamente la ejecución de los procesos

17

Page 18: Tema 9: Memoria virtual - ULPGC

Reanudación de instrucciones

Además del apoyo hardware específico necesario, ¿Existe algún otro tipo de restricción para que esta técnica se pueda implementar?

Necesidad de poder reiniciar una instrucción después de un fallo de página

Ejemplos:DECREMENTAR reg[1] y BIFURCAR a la dirección Y si el resultado es ceroInstrucción MVC del IBM 360

18

Page 19: Tema 9: Memoria virtual - ULPGC

Reanudación de instrucciones

Una implicación arquitectónica importante para poder implementar paginación por demanda, y en general, memoria virtual es que se puede producir la interrupción de ciertas instrucciones durante su ejecuciónProblemas: reiniciar la instrucción no siempre soluciona el problemaSoluciones:

Deshacer los efectos parciales de la instrucción interrumpida y reiniciar la instrucción cuando haya sido procesada la excepciónReanudar la instrucción desde el punto exacto de interrupción cuando el elemento ausente sea incorporado a memoriaPreexaminar las referencias a memoria buscando fallos de página antes de comenzar la ejecución de la instrucción

19

Page 20: Tema 9: Memoria virtual - ULPGC

Algoritmos de gestión de memoria virtual

Para la implementación de la paginación por demanda, el SO debe implementar:

Algoritmo de asignación de marcosSi tenemos varios procesos en memoria es necesario decidir cuantos marcos se asignan a cada uno

Algoritmo de reemplazo de páginasProceso básico

1.- Atender la interrupción de fallo de página2.- Traer la página a memoria y colocarla en un marco libre3.- Reiniciar el proceso

¿Y si no hay marcos libres? Reemplazo de páginas

20

Page 21: Tema 9: Memoria virtual - ULPGC

Algoritmo de reemplazo

Modificación en el proceso básico:Si no hay marco libre, usar un algoritmo de reemplazo de página para escoger un marco víctimaEscribir la página víctima en el disco y actualizar tablasLeer la página del disco y colocarla en el marco recién liberado y actualizar tablasFinalmente reiniciar el proceso de usuario

21

Page 22: Tema 9: Memoria virtual - ULPGC

Bit de modificación

Problema:Si no hay marcos libres se requieren dos transferencias de páginasEste gasto extra puede reducirse empleando un bit de modificación o bit sucio

El hardware pone a 1 el bit de modificación de una página siempre que se escribe una palabra o byte de la página

22

Page 23: Tema 9: Memoria virtual - ULPGC

Algoritmos de reemplazo: cómo evaluarlos

Objetivo: Frecuencia de fallos de página sea lo más baja posibleEvaluamos un algoritmo ejecutándolo con una serieespecífica de referencias y calculando el número de fallos de página

La serie de referencias las podemos generar forma aleatoria o rastreando la ejecución de un sistema dado y registrando la dirección de cada referencia a la memoria

Para una serie de referencias determinadas y un algoritmo concreto, determinar el número de fallos de página requiere conocer el número de marcos de los que se dispone en el sistema

23

Page 24: Tema 9: Memoria virtual - ULPGC

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 tamaño de página es de 100 bytes, se reduce a la siguiente cadena de referencias

1,4,1,6,1,6,1,6,1,6,1

24

Page 25: Tema 9: Memoria virtual - ULPGC

Algunos algoritmos de reemplazo

BásicosFIFOOPTIMOLRU – least recently used

Aproximaciones LRULRU con bits de referencia adicionalesLRU de segunda oportunidad o del relojLRU de segunda oportunidad mejorado

De conteoLFU – less frequently usedMFU – most frequently used

25

Page 26: Tema 9: Memoria virtual - ULPGC

Algoritmo FIFO

1. FIFOSe sustituye la página residente que lleve más tiempo en memoriaFácil de implementar (cola FIFO de páginas)Problema: al no tener en cuenta la historia del uso de una página dada, FIFO puede prescindir de páginas a las que se accede con frecuenciaPadece la anomalía de Belady (fenómeno paradójico consistente en que aumenta el número de fallos de páginas cuando se asignan más páginas reales al proceso)Propiedad de pila: para cualquier punto en la cadena de referencia, el conjunto de páginas en N marcos de página es un subconjunto del que se formaría en N+1 marcos de página

26

Page 27: Tema 9: Memoria virtual - ULPGC

Ejemplo: FIFO

27

Page 28: Tema 9: Memoria virtual - ULPGC

Efecto Belady

28

Page 29: Tema 9: Memoria virtual - ULPGC

Algoritmo de reemplazo óptimo

2. ÓptimoEscoger como víctima la página que más tarde en volver a ser accedidaEs el algoritmo que presenta la frecuencia de fallos de página más baja de todosNo implementable (requiere presciencia)Útil como referencia de comparación

29

Page 30: Tema 9: Memoria virtual - ULPGC

Ejemplo: óptimo o mínimo

30

Page 31: Tema 9: Memoria virtual - ULPGC

Algoritmo LRU

3. LRU: menos recientemente usadaAproximación implementable del óptimoSe asocia a cada página el instante en que se usó por última vez, y en caso de reemplazo se escoge la página que tiene más tiempo sin usarseImplementacion:

Contadores (marca de tiempo)Pila

Requiere hardware adicional y es costosoLos sistemas reales implementan aproximaciones a la LRU

31

Page 32: Tema 9: Memoria virtual - ULPGC

Ejemplo: LRU

32

Page 33: Tema 9: Memoria virtual - ULPGC

Aproximaciones a la LRU

4. Aproximación a LRUTanto el reemplazo óptimo como el LRU no padecen la anomalía de BeladyLas técnicas basadas en LRU utilizan un bit de referencia puesto por el hardwareEl hardware enciende el bit de referencia de una página cada vez que se hace referencia a ella (lectura o escritura)Examinando este bit no conoceremos el orden de uso, pero sí sabemos cuáles páginas se usaron y cuales no

33

Page 34: Tema 9: Memoria virtual - ULPGC

Varios bits de referencia

4.1. Algoritmo con bits de referencia adicionalesEs posible obtener información de ordenamiento adicional si registramos los bits de referencia a intervalos adicionalesPor ej.: byte histórico

1100010001110111LRU: página con el número más bajo

No está garantizada la unicidad de dichos números (en caso de igualdad, se podría aplicar FIFO)Si el número de bits históricos es cero, es decir, dejamos sólo el bit de referencia => Algoritmo de segunda oportunidad

Se usó más recientemente

34

Page 35: Tema 9: Memoria virtual - ULPGC

Algoritmo 2ª oportunidad o del reloj

4.2. Algoritmo de segunda oportunidad o algoritmo del reloj

FIFO teniendo en cuenta el bit de referenciaSi el valor es cero, reemplazamos la página, pero si es 1, le damos una segunda oportunidad, ponemos su bit de referencia a cero y seleccionamos la siguiente página FIFOUna forma de implementar el algoritmo de segunda oportunidad es con una cola circular= FIFO si todos los bits están encendidos

35

Page 36: Tema 9: Memoria virtual - ULPGC

Algoritmo 2ª oportunidad o del reloj

36

Page 37: Tema 9: Memoria virtual - ULPGC

2ª oportunidad, mejorado

4.3. Algoritmo de segunda oportunidad mejorado= pero considerando tanto el bit de referencia como el bit de modificaciónCuatro situaciones: (0,0), (0,1), (1,0), (1,1)Se reemplaza la primera página que encontremos de la clase más bajaEs posible que se tenga que explorar la cola varias veces entes de encontrar la página a reemplazarEj: Macintosh

37

Page 38: Tema 9: Memoria virtual - ULPGC

Algoritmos de conteo: LFU, MFU

5. Algoritmos de conteoContador del número de referencias5.1. Algoritmo LFU: menos frecuentemente usadas (cuenta más baja) son las reemplazadas

Problema: páginas que se usaron mucho durante la fase inicial del proceso y luego no se vuelven a usarSolución: Desplazar las cuentas un bit a la derecha a intervalos regularesProblema serio: páginas traídas recientemente, alta probabilidad de salir (cuenta baja)

5.2. Algoritmo MFU: más frecuentemente usada (cuenta más alta) es la reemplazada, para evitar el problema anterior

Problema: se pueden mantener páginas viejas a las que no se accede

38

Page 39: Tema 9: Memoria virtual - ULPGC

Algoritmos de reemplazo: resumen

Problemas Hardware y/o ED necesarios

FIFO El peor resultado (mayor tasa de fallos de página)

Anomalía de Belady Lista encadenada de páginas

Optimo El mejor resultado (menor tasa de fallos de página)

No implementable

LRU Demasiada información + hardware

Contador (timestamp) en TP o pila

Aprox. LRU con bits referencia

El SO debe interrumpir y desplazar los bits referencia

Bits de referencia en TP

Aprox. LRU de 2ª oportunidad

Bit de referencia en TP + lista circular

Aprox. LRU de 2ª oportunidad mejorado

Selecciona la página que menos tiempo se tarda en reemplazar y que se ha utilizado menos recientemente

Se necesitan varias batidas en la lista circular

Bit de referencia en TP + lista circular

LFU La últimas páginas introducidas recientemente están continuamente reemplazándose

Contador en TP

MFU Las páginas mas “populares” se reemplazan

Contador en TP

39

Page 40: Tema 9: Memoria virtual - ULPGC

Campos en la tablas de páginas

Memoria Paginada

Memoria Virtual

Marco obligatorio obligatorio

Permisos opcional opcional

Validez obligatorio

Sucio opcional

Bloqueo opcional

FIFO LRU LRU con bits

referencia

LRU 2ª oportun.

LRU 2ª oportun. mejorado

LFU MFU

Bits de referencia

obligatorio (varios bits)

obligatorio (1! bit)

obligatorio (1! bit)

Contador (timestamp)

opcional

Contador accesos

obligatorio obligatorio

40

Page 41: Tema 9: Memoria virtual - ULPGC

Paginación por demanda: mejoras en el reemplazo

Reserva de marcos libres: % de marcos libres para no esperar a que las víctimas se escriban en discoRecordar qué páginas están en los marcos libresDescargar en disco las páginas modificadas en segundo plano

41

Page 42: Tema 9: Memoria virtual - ULPGC

Asignación de marcos a los procesos

Reserva de marcosEs conveniente definir un sistema de reparto de los marcos a los procesos en ejecuciónTodo proceso debería tener una reserva mínima de marcos (depende del repertorio de instrucciones)¿Cómo asignar los marcos a los procesos?

Reparto alícuotoReparto proporcional (por tamaño, por prioridad)Reemplazo ¿global o local?

42

Page 43: Tema 9: Memoria virtual - ULPGC

Tipos de reemplazo

Reemplazo local/globalEl conjunto de páginas candidatas a sustituir está/no estárestringido al proceso que provoca la carencia de página

Reemplazo globalUn mismo proceso podría tener un rendimiento muy diferente a causa de circunstancias puramente externas

Reemplazo localPodría obstaculizar la ejecución de un proceso al no permitirle aprovechar otras páginas de memoria de poco uso

El reemplazo global generalmente aumenta el rendimiento del sistema y es el método más utilizado

43

Page 44: Tema 9: Memoria virtual - ULPGC

Hiperpaginación y área activa

Primeros sistemas de paginaciónSO supervisa la utilización de la CPUSi el aprovechamiento es demasiado bajo aumenta el grado de multiprogramaciónSupongamos una política de reemplazo globalAl 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 paginación (el encargado de servir los fallos de página) y se va vaciando la cola de preparadosConsecuencia: disminuye el aprovechamiento de la CPU y entonces el planificador de CPU aumenta el grado de multiprogramación, agravando aún más el problema

44

Page 45: Tema 9: Memoria virtual - ULPGC

Hiperpaginación y área activa

Si el grado de multiprogramación es excesivo, el sistema puede estar más tiempo paginando que haciendo trabajo productivo (hiperpaginación)¿cómo evitarla?

Políticas de reemplazo localla hiperpaginación de un proceso puede afectar al resto

Concediendo memoria según las necesidades reales (localidades, área activa...)

45

Page 46: Tema 9: Memoria virtual - ULPGC

Modelo de localidades

Se observa que todo proceso trabaja en cada momento con unas zonas de código y datos bien delimitadas: localidadCuando se salta a otra subrutina, etc., se cambia de localidadSi un proceso tiene asignada su localidad en memoria principal, no ocasiona fallos de página

46

Page 47: Tema 9: Memoria virtual - ULPGC

Área activa (working set)

Concepto que trata de aproximarse a la localidad actual de un procesoEs el conjunto de páginas con el que ha trabajado un proceso en un pasado reciente Δ (ventana del área activa) :

WS(t, Δ) = páginas accedidas entre t y t- Δ

Si Δ tiene el tamaño adecuado, es una fiel aproximación de la localidad actual

47

Page 48: Tema 9: Memoria virtual - ULPGC

Área activa

48

Page 49: Tema 9: Memoria virtual - ULPGC

Área activa: cómo aplicarla en la gestión de memoria virtual

El SO vigila el área activa de cada proceso y le asigna un número de marcos igual a su tamañoSi hay suficientes marcos adicionales, se puede iniciar otro procesoSi la suma de los tamaños de las áreas activas aumenta hasta exceder el número total de marcos disponibles, el SO seleccionará un proceso para suspenderloLa estrategia del área activa evita la hiperpaginaciónal tiempo que mantiene el grado de multiprogramación lo más alto posible

49

Page 50: Tema 9: Memoria virtual - ULPGC

¿Cómo detectar las áreas activas?

Lo difícil del modelo del área activa es cómo sabe el SO cuál es el área activa de un proceso en cada momentoImplementación

El área activa se puede estimar utilizando el bit de referencia, de forma similar a la LRU

A intervalos regulares, los bits de referencia de las páginas residentes pueden ser registrados (nº de bits históricos) y borradosDe esta forma tenemos una especie de historial de uso

Si se descubre que un proceso no tiene páginas suficientes para su área activa, se le suspende por completo: así se evita la hiperpaginación

50

Page 51: Tema 9: Memoria virtual - ULPGC

Frecuencia de fallos de página (PFF)

Podemos establecer límites superiores e inferiores para la frecuencia de fallos de página deseadaSi la PFF de un proceso es muy baja, le quitamos páginas; si es muy alta, le damos más páginasSi la PFF global aumenta y no hay marcos libres, seleccionamos un proceso y lo suspendemosLos marcos de página se repartirán entre los procesos que tengan fallos de página muy frecuentes

51

Page 52: Tema 9: Memoria virtual - ULPGC

Prepaginación

Prepaginación: cuando se reanuda un proceso que estaba en swap, traer a memoria principal todas las páginas del área activa

Para cada proceso se guarda también la información relativa al área activa

La prepaginación puede ser ventajosa en algunos casos (cuando el costo de la prepaginación sea menor que el de atender los fallos de página correspondientes)

52

Page 53: Tema 9: Memoria virtual - ULPGC

Tamaño de página óptimo

La eficiencia de las operaciones de E/S (disco) y el espacio consumido en tablas recomiendan tamaños de página grandesLa localidad y la fragmentación recomiendan tamaños de página pequeños

53

Page 54: Tema 9: Memoria virtual - ULPGC

Influencia de la estructura del código

Estructura de los programasLa forma en que se accede a los datosLas estructuras de datos que se empleanCómo se estructura el código (el compilador y el cargador también pueden tener efecto sobre la paginación)El lenguaje de programación (la localidad es mejor en lenguajes con uso restringido de punteros)

Influyen en el rendimiento de la memoria virtual

54

Page 55: Tema 9: Memoria virtual - ULPGC

Otras consideraciones

Interbloqueo de E/S cuando se emplea DMAE/S pendiente en una página reemplazadaSoluciones:

Búferes en memoria del SOPermitir fijar páginas en memoria (bit de bloqueo)

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

55

Page 56: Tema 9: Memoria virtual - ULPGC

Otras técnicas: segmentación por demanda

Segmentación por demandaLa unidad de gestión es el segmentoEj: OS/2 en el Intel 80286

56

Page 57: Tema 9: Memoria virtual - ULPGC

Memoria virtual: sumarioEstrategiasPaginación bajo demanda

Algoritmos de reemplazo de páginas

Algoritmos de asignación de marcos

MejorasReserva de marcos libres

Evitar Hiperpaginación

Otras consideracionesPrepaginaciónTamaño de páginaEstructura de los programas Interbloqueo de E/S con DMA

•FIFO•OPT•LRU

•LRU bits adicionales•LRU 2ª oport.•LRU 2ª oport. mejorado

•LFU•MFU

•Reserva de marcos•Reemplazo local / global

• Reemplazo local• Localidades/área activa• Frecuencia de fallos de página

57