Sistemas Operativos

Anuncio
Sistemas Operativos
Curso 2016
Memoria Virtual
Agenda






Introducción.
Implementación.
Estudio de performance.
Algoritmos de reemplazo.
Estrategia de asignación de marcos (frames).
Hiperpaginación (Trashing).
Sistemas Operativos | Curso 2016 | Memoria Virtual
2/33
Introducción
 La necesidad de ejecutar programas que requerían más memoria de que
se disponía en el sistema genero la técnica de memoria virtual propuesta
por Fotheringham en 1961.
 La idea es mantener en memoria física solamente la memoria que el
proceso está utilizando y el resto en disco.
 La técnica de memoria virtual abstrae la memoria principal en un gran
arreglo uniforme de bytes.
 Si bien es una técnica muy potente, el uso descuidado puede generar
una degradación importante del sistema.
Sistemas Operativos | Curso 2016 | Memoria Virtual
3/33
Introducción
 Ej.: Estructura del espacio de direccionamiento en SunOS SPARC (32 y
64 bits).
Sistemas Operativos | Curso 2016 | Memoria Virtual
4/33
Introducción
Sistemas Operativos | Curso 2016 | Memoria Virtual
5/33
Introducción
 Esquema de la implementación de memoria virtual.
Sistemas Operativos | Curso 2016 | Memoria Virtual
6/33
Implementación
 La implementación de memoria virtual es realizada a través de la técnica
de paginación bajo demanda.
 Los sistemas en general brindan un esquema de segmentación, en
donde los segmentos están divididos en páginas.
 En la paginación bajo demanda los procesos residen en un dispositivo de
disco y son puestos en memoria principal cuando es necesario cargarlos
para ejecutar.
 La carga del proceso en memoria no es total, sino que implementa un
cargador “perezoso” (lazy swapper), que cargará las páginas según se
vayan necesitando.
 A su vez, los sistemas utilizan una memoria denominada swap, que
permite mantener en el sistema más memoria utilizada de la física
disponible.
Sistemas Operativos | Curso 2016 | Memoria Virtual
7/33
Implementación
Sistemas Operativos | Curso 2016 | Memoria Virtual
8/33
Implementación
 Utilizar un esquema de este
tipo requiere conocimiento de
las páginas que están activas
en memoria. Para esto se
puede utilizar el valid-invalid
bit.
 En la tabla de página se
tienen las páginas que están
cargadas en memoria
principal, conteniendo el
número de frame y el validinvalid bit.
 Al principio todas las entradas
tienen el bit de validez
marcado como i.
Sistemas Operativos | Curso 2016 | Memoria Virtual
9/33
Implementación
 A la porción de memoria que está cargada en memoria principal de un
proceso se le denomina memoria residente (resident memory).
 El acceso a memoria residente por parte de un proceso es tomado como
un acceso normal, pero el acceso a memoria no residente genera un fallo
de página (page fault).
 El fallo de página genera un trap a nivel de sistema operativo que activa
una rutina de atención para cargar la página en memoria principal.
Sistemas Operativos | Curso 2016 | Memoria Virtual
10/33
Implementación
 El acceso a la memoria genera la siguiente secuencia de pasos:
– Verificar que el proceso referencia una página correcta dentro del espacio de
direccionamiento. El proceso puede generar cualquier dirección de memoria
dentro de su espacio de direccionamiento, pero no todas son válidas ya que
existen “huecos” en el espacio virtual que pueden no haber sido asignados.
Por ejemplo, un acceso fuera de un arreglo puede generar un acceso a una
página virtual que no fue asignada al proceso. Esto genera un page fault o
segmentation fault y el proceso es finalizado.
– Si el acceso fue correcto dentro del espacio virtual, se busca en la tabla de
página el frame correspondiente, verificando que el estado del bit de validez.
Sistemas Operativos | Curso 2016 | Memoria Virtual
11/33
Implementación
 Si el bit de validez está encendido, se accede al frame correspondiente
realizando la traducción dando por finalizado el acceso.
 Si el bit de validez está apagado se genera el trap de fallo de página.
 Rutina de atención del fallo de página:
– Se busca un frame libre en memoria principal, sino hay ejecuta un algoritmo
de reemplazo (se verá más adelante).
– Se realiza un operación de lectura sobre el disco que guarda la página. La
página se carga en el frame obtenido en el paso anterior.
– Se actualiza la tabla de página e información en las estructuras del PCB del
proceso para marcar que la página está disponible en memoria principal.
– Finalmente, se retoma el control a la instrucción que fue interrumpida debido
al fallo de página.
 Si este método es aplicado en forma rigurosa se tendrá un sistema puro
de paginación por demanda (pure demand paging).
 El hardware necesario para la implementación es:
– Tabla de página.
– Espacio denominado swap del disco.
Sistemas Operativos | Curso 2016 | Memoria Virtual
12/33
Estudio de la performance
 La técnica de paginación por demanda puede generar un alto impacto en
el rendimiento del sistema. Una medida utilizada para ver el efecto que
produce es el tiempo de acceso efectivo (effective access time). Se
definida mediante la fórmula:
 EAT = (1-p) * ma + p * TRPF
 TRPF es el tiempo de resolución de el page fault, p la probabilidad de
que ocurra un fallo de página y ma el tiempo del acceso a memoria.
 El tiempo de resolución involucra, entre otras cosas, salvar el estado del
proceso, solicitud de lectura de la página a disco, ejecución del
planificador, atención de rutina de completitud de la operación de E/S de
parte del disco, corrección de tablas necesarias, espera de asignación del
procesador y restaurar el estado al proceso.
Sistemas Operativos | Curso 2016 | Memoria Virtual
13/33
Estudio de la performance
 Ej.: Tomando como TRPF = 25 milisegundos y ma = 100 nanosegundos,
tenemos que:
 EAT = (1-p) * (100) + p * (25.000.000)‫‏‬
 EAT = 100 + 24.999.900 * p
 El tiempo de acceso efectivo es directamente proporcional a la
probabilidad de fallo de página.
 Si queremos un 10% de degradación del sistema:
 110 > 100 + 25000000 * p
 10 > 25000000 * p
 p < 0,0000004
 Esto da 1 acceso fallido cada 2.500.000 de accesos.
Sistemas Operativos | Curso 2016 | Memoria Virtual
14/33
Algoritmos de reemplazo
 En un sistema cargado, el uso de la memoria principal por parte de los
procesos puede agotar el recurso.
 La necesidad de traer a memoria principal una página en una memoria
principal llena, genera la búsqueda de un frame a reemplazar. Un
algoritmo de reemplazo equivocado genera un impacto significativo de
degradación del sistema.
 El frame reemplazado (víctima) será puesto en memoria swap, y ante un
eventual uso en el futuro volverá a memoria principal (a través de un
page fault).
 La rutina de page fault debe incorporar el reemplazo:
– Elegir la victima mediante el algoritmo de reemplazo.
– Escribir la victima en memoria swap y ajustar la tabla de página
correspondiente (swap out).
– Cargar la página en el frame correspondiente.
– Ajustar la tabla de página del proceso.
Sistemas Operativos | Curso 2016 | Memoria Virtual
15/33
Algoritmos de reemplazo
Sistemas Operativos | Curso 2016 | Memoria Virtual
16/33
FIFO (First In – First Out)
 El algoritmo reemplaza la página que hace más tiempo que está en
memoria principal.
 Es un algoritmo fácil de implementar ya que requiere únicamente de una
estructura tipo cola.
 Sin embargo este algoritmo sufre de la anomalía de Belady:
– “Los fallos de páginas se incrementan al asignar más frames”.
Sistemas Operativos | Curso 2016 | Memoria Virtual
17/33
Anomalía de Belady para FIFO
 Para la siguientes secuencia de acceso a página:
– 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
– En 3 frames se tienen 9 fallos de página.
– En 4 frames se tienen 10 fallos de página.
Sistemas Operativos | Curso 2016 | Memoria Virtual
18/33
Segunda oportunidad (Second chance)‫‏‬
 En el algoritmo FIFO una página es reemplazada sin tener en cuenta las
referencias que tuvo.
 Una alternativa es que cada página tenga una marca si fue referenciada
(bit de referencia) luego de ser cargada en memoria.
 En el momento de reemplazo, se verifica el bit de referencias. Si está
prendido, a la página se le da una segunda chance y es puesta al final de
la cola. Luego se continua con la siguiente página que está al principio de
la cola. Si está apagado, es seleccionada para ser reemplazada.
 Es un algoritmo un poco ineficiente, pero mejora la reducción de cantidad
de fallos de página con respecto a FIFO.
Sistemas Operativos | Curso 2016 | Memoria Virtual
19/33
Óptimo (Optimal)
 Un algoritmo que no sufre de la anomalía de Belady es el algoritmo
óptimo.
 En este se reemplaza la página que no va a ser usada por el mayor
período de tiempo.
 Este algoritmo es el que genera menos fallos de página de todos los
posibles, pero es imposible de implementar ya es necesario saber a que
páginas accederá un proceso.
Sistemas Operativos | Curso 2016 | Memoria Virtual
20/33
No recientemente usada (Not Recently Used – NRU)
Algoritmo de segunda oportunidad mejorado
 A los frames se les asocian dos bits: uno de referencia y otro de
modificación.
 El bit de referencia se actualiza cada vez que se realiza una operación
sobre el mismo (lectura o escritura), mientras que el bit de modificación
se prende cada vez que se escribe.
 Cada tanto se genera una interrupción de reloj que limpia el bit de
referencia.
 Al ocurrir un fallo de página los frames son divididos en 4 clases:
–
–
–
–
Clase 0: no referenciada, no modificada.
Clase 1: no referenciada, modificada.
Clase 2: referenciada, no modificada.
Clase 3: referenciada, modificada.
Sistemas Operativos | Curso 2016 | Memoria Virtual
21/33
No recientemente usada (Not Recently Used – NRU)
Algoritmo de segunda oportunidad mejorado
 Se reemplaza un frame al azar de la clase más baja que no este vacía.
 Es un algoritmo sencillo de implementar y para ser eficiente deberá tener
soporte de hardware ya que cada referencia a memoria se deben
actualizar los bits (de referencia y de modificación).
Sistemas Operativos | Curso 2016 | Memoria Virtual
22/33
Menos recientemente usada (Least Recently Used –
LRU)
 Uno de los algoritmo que más se aproxima al óptimo es el LRU.
 A cada página se le asocia el tiempo en que fue referenciada. La página
elegida por el algoritmo de reemplazo será la que fue accedida hace más
tiempo.
 Es un algoritmo que es óptimo en cuanto al uso hacia atrás de las
páginas y es bastante utilizado por los sistemas operativos actuales.
 Para la implementación de este algoritmo es necesario soporte a nivel de
hardware.
 No sufre la anomalía de Belady
Sistemas Operativos | Curso 2016 | Memoria Virtual
23/33
Estrategia de asignación de frames
 La multiprogramación permite la ejecución concurrente de varios
procesos.
 Los procesos realizarán sus pedidos de memoria y el sistema operativo
tratará de resolver las solicitudes de forma de lograr un uso adecuado del
recurso.
 Si el sistema operativo no implementa una estrategia de asignación de
memoria, un proceso que requiera mucha memoria puede dejar al
sistema colapsado.
 Es por eso necesario definir una estrategia de asignación adecuada para
todos los procesos que comparten los recursos.
Sistemas Operativos | Curso 2016 | Memoria Virtual
24/33
Estrategia de asignación de frames
 Una estrategia podría dividir la cantidad de frames según la cantidad de
procesos que existan en el sistema. Esta estrategia no es muy eficiente
ya que los procesos no tienen la misma necesidad de este recurso.
 Una alternativa es ponderar la cantidad de frames asignados según el
uso de memoria que tengan.
 Sea si la cantidad de memoria virtual del proceso pi.
 La memoria virtual de todos el sistema es:
 S = ∑s i
 Si la cantidad de frames del sistema es m, definimos una estrategia de
asignación ponderada donde al proceso pi se le asignan fi frames:
 fi = (si / S) * m
Sistemas Operativos | Curso 2016 | Memoria Virtual
25/33
Estrategia de asignación de frames
 En la ejecución de un algoritmo de reemplazo existen dos opciones de
páginas a reemplazar:
– Reemplazo Global (Global replacement): Un proceso puede reemplazar un
frame utilizado por otro.
– Reemplazo Local (Local Remplacement): Un proceso reemplaza únicamente
los frames que tiene asignado.
 A diferencia del global, en el reemplazo local la cantidad de frames
asignado a un proceso no varía.
 Un problema de la estrategia global es que los fallos de página de un
proceso afecta la eficiencia de ejecución de otro.
 La estrategia local independiza los fallos de página por proceso, pero
ocupa frames de memoria que quizás sea poco usados y no son
reemplazados. Es por eso que el reemplazo global es más utilizado.
Sistemas Operativos | Curso 2016 | Memoria Virtual
26/33
Hiperpaginación
 La estrategia de asignación de frames limita a los procesos en la cantidad
de frames que pueden tener en memoria.
 Si un proceso tiene un uso activo de un mayor número de frames que los
asignados por el sistema, el proceso tendrá un alto porcentaje de page
fault.
 El proceso estará continuamente realizando page fault debido a que sus
frames están activos.
 Si un proceso pasa más tiempo paginando que ejecutando, se dice que el
proceso sufre de hiperpaginación (Thrashing).
 La hiperpaginación degrada significativamente el rendimiento.
Sistemas Operativos | Curso 2016 | Memoria Virtual
27/33
Hiperpaginación
 La multiprogramación genera un mayor uso del procesador, pero puede
llevar al sistema a un estado de degradación por la hiperpaginación.
Sistemas Operativos | Curso 2016 | Memoria Virtual
28/33
El modelo Working-Set
 Es necesario atacar el potencial problema de la hiperpaginación.
 Denning (1970) propuso el modelo del Working-Set (conjunto de trabajo),
que es basado en el principio de localidad: “A medida que un proceso
ejecuta va utilizando un conjunto de páginas llamadas activas”. El
conjunto de páginas activas va cambiando a medida que ejecuta el
proceso.
 Se define un conjunto de páginas (A), que son las más recientemente
referenciadas. Este conjunto de páginas se denomina el working-set.
Sistemas Operativos | Curso 2016 | Memoria Virtual
29/33
El modelo Working-Set
 Si el conjunto A es muy pequeño, no se logrará representar bien la
localidad, y, si es muy grande, se tendrá una localidad muy grande.
 Sea WSSi la cantidad de frames que están en el working-set del proceso
i. Se define:
 D = ∑WSSi
 D es la cantidad total de frames demandada por los procesos del
sistema. Si D es mayor que la cantidad de frames disponibles en el
sistema, se tendrá hiperpaginación.
Sistemas Operativos | Curso 2016 | Memoria Virtual
30/33
El modelo Working-Set
 Mantener el working-set mediante las últimas referencias que realiza un
proceso es bastante costoso, ya que tendremos inserciones y bajas
continuamente, cada vez que hay una referencia tenemos que ver si ya
está en el working-set.
 Es común adoptar la estrategia de elegir el working-set según las páginas
accedidas en un tiempo t fijo (p.ej.: 100 milisegundos). El tiempo es de
ejecución real del proceso.
 Se utiliza un timer que interrumpe con un t fijo. Un bit que marca si fue
usado el frame desde la interrupción del timer anterior. Además, un
campo que marca el tiempo de la última vez que fue referenciada.
Sistemas Operativos | Curso 2016 | Memoria Virtual
31/33
El modelo Working-Set
 Cuando ocurre la interrupción del timer, se verifican todas las páginas del
sistema para armar los working-set de los procesos.
 En la interrupción se verifica el bit de uso
– Si está prendido, entonces el frame pertenece al working-set del proceso, se
actualiza el campo del tiempo de uso con la hora actual del sistema y se
apaga el bit para la verificación en la próxima interrupción.
– Si está apagado, se verifica el campo de tiempo de uso con la hora actual del
sistema. Si este tiempo es mayor que el t del proceso, entonces el frame no
pertenece al working-set del proceso.
Sistemas Operativos | Curso 2016 | Memoria Virtual
32/33
Estrategia de frecuencia de fallos de página (pagefault frequency)
 Alternativa al modelo de working-set
 Monitorea la frecuencia con que se producen los fallos de pagina
– Si la frecuencia es mayor a un umbral Uh, el proceso necesita más marcos
– Si la frecuencia es menor a un umbral Ul, el proceso puede liberar un marco
Sistemas Operativos | Curso 2016 | Memoria Virtual
33/33
Descargar