Memoria Virtual Fallos de Página Algoritmos de Reemplazamiento Cecilia Hernández 2007-1
Volviendo a Paginación nmp npv dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pa...
Entradas de Tablas de Páginas (PTE) <ul><li>Estructura de cada entrada en la tabla de páginas </li></ul><ul><ul><li>Usualm...
Memoria virtual usando paginación <ul><li>Dijimos que un proceso no necesita estar completamente en memoria física </li></...
Fallos de página <ul><li>Qué ocurre si un proceso referencia una dirección virtual que se mapea a un marco que ha sido qui...
Ilustración Fallo de Página Rutina atención Fallo Página CPU i 1 2 3 4 5 6 tabla de página DISCO Memoria Física Marco pagi...
Pasos en Fallo de Página <ul><li>(1)  Referencia a Memoria: Información de Memoria en PCB de proceso captura proceso ejecu...
Paginación por Demanda <ul><li>Técnica que permite otorgar páginas de memoria a procesos a medida que lo necesiten </li></...
Reemplazo de páginas <ul><li>Cuando una página se lee de disco </li></ul><ul><ul><li>Si hay marcos de páginas libres, obte...
Como se carga un programa? <ul><li>Crea PCB de proceso </li></ul><ul><li>Crea tabla de página </li></ul><ul><li>Pone espac...
Parece complicado… Cómo que esto funciona? <ul><li>Cuál es la clave? </li></ul><ul><ul><li>Localidad </li></ul></ul><ul><u...
Paginación por Demanda y Conjunto de trabajo <ul><li>Cuando proceso comienza ejecución </li></ul><ul><ul><li>Su tabla de p...
Cuando la Memoria es Escasa? <ul><li>Cuando queda poca memoria física libre, y nuevo proceso se ejecuta </li></ul><ul><ul>...
Fallo de Páginas 2 <ul><li>Qué ocurre con un proceso que referencia a dirección virtual en una página, cuyo marco de págin...
Reemplazamiento de Páginas <ul><li>Objetivos de los algoritmos de reemplazamiento de páginas </li></ul><ul><ul><li>Disminu...
Algoritmos de Reemplazo Optimo Algoritmo de Belady <ul><li>Misma idea de SJF (algoritmo de planificación de procesos) </li...
Algoritmo de Reemplazo 2 : FIFO <ul><li>Fácil de implementar </li></ul><ul><ul><li>Lista de páginas del sistema </li></ul>...
Algoritmo de Reemplazo 3 : Least Recently Used (LRU) <ul><li>LRU usa información acerca de referencias para decidir que pá...
Aproximación para LRU <ul><li>Muchas aproximaciones, todas usan bit R </li></ul><ul><ul><li>Mantener un contador por cada ...
Algoritmo de Reemplazo 4 : LRU Reloj <ul><li>LRU con Reloj. Página no usada recientemente o Segunda Oportunidad </li></ul>...
Asignando Marcos de Páginas <ul><li>En un sistema multiprogramado se necesita entregar memoria a procesos que compiten por...
Asignando Marcos de Páginas cont <ul><li>Algoritmos de espacio variable ( Global ) </li></ul><ul><ul><li>Conjunto de págin...
Conjunto de trabajo ( Working set ) <ul><li>El working set de un proceso se utiliza para modelar la localidad dinámica de ...
Conjunto de trabajo <ul><li>Ejemplo: Ventana de 10 referencias </li></ul><ul><ul><li>Tamaño de conjunto de trabajo = 4 </l...
Algoritmo de Reemplazo 5: usando Conjunto de trabajo ( Working Set )  <ul><li>El working set de un proceso cambia con la l...
Algoritmo de Reemplazo 6: Frecuencia de Fallo de Página <ul><li>Algoritmo de espacio variable </li></ul><ul><ul><li>Monito...
Frecuencia fallos de página Número de marcos asignados por proceso Razón de fallos de página Umbral superior Umbral inferi...
Fallos de página Número de marcos asignados por proceso Número de referencias a memoria entre fallos de página Qué pasa? Q...
Rendimiento con Paginación con Demanda <ul><li>Si no hay fallos de página </li></ul><ul><ul><li>Tiempo efectivo de acceso ...
Hiperpaginación <ul><li>Cuando un proceso tiene una alta razón de fallo de páginas </li></ul><ul><ul><li>SO pasa mucho tie...
Hiperpaginación Numero de procesos activos  Nivel de multiprogramación %Utilización de CPU o Productividad (reqs/segs) Qué...
Resumen <ul><li>Paginación por demanda </li></ul><ul><ul><li>Inicialmente proceso no tiene páginas cargadas, SO las carga ...
Upcoming SlideShare
Loading in …5
×

Pag Demanda Reemplazamiento

3,969 views

Published on

Algoritmos de Reemplazamiento

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,969
On SlideShare
0
From Embeds
0
Number of Embeds
64
Actions
Shares
0
Downloads
149
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pag Demanda Reemplazamiento

  1. 1. Memoria Virtual Fallos de Página Algoritmos de Reemplazamiento Cecilia Hernández 2007-1
  2. 2. Volviendo a Paginación nmp npv dirección virtual dirección física Marco Pag 0 Marco Pag 1 Marco Pag 3 Marco Pag 4 Marco Pag N . . . offset offset nmp npv: Num. página virtual nmp: Num. marco página Marco Pág 2 Cada Proceso tiene su propia tabla de página
  3. 3. Entradas de Tablas de Páginas (PTE) <ul><li>Estructura de cada entrada en la tabla de páginas </li></ul><ul><ul><li>Usualmente mas que solo el número de marco de página </li></ul></ul>1 1 1 2 20 V R M Prot Marco de pagina <ul><ul><ul><li>V : Bit válido . indica si página es válida </li></ul></ul></ul><ul><ul><ul><li>R : Bit de Referencia se setea cuando página ha sido leída o escrito </li></ul></ul></ul><ul><ul><ul><li>M : Dirty bit , es seteado cuando la página ha sido escrita </li></ul></ul></ul><ul><ul><ul><li>Prot : Bits de protección de Lectura, Escritura, Ejecución </li></ul></ul></ul>
  4. 4. Memoria virtual usando paginación <ul><li>Dijimos que un proceso no necesita estar completamente en memoria física </li></ul><ul><ul><li>Bueno donde está? El espacio de direccionamiento completo se encuentra en disco (almacenamiento secundario) en bloques paginados </li></ul></ul><ul><ul><li>El SO utiliza la memoria como cache de lo que esta en disco (en base a páginas) </li></ul></ul><ul><ul><li>Una página del proceso en disco se carga en un marco de página (para ello debe encontrarse un marco libre) </li></ul></ul><ul><ul><ul><li>SO normalmente tiene lista de marcos libres </li></ul></ul></ul><ul><ul><ul><li>Normalmente páginas de procesos son cargadas a memoria por demanda ( Paginación por demanda ) </li></ul></ul></ul><ul><ul><li>Si no marcos libres y un proceso requiere uno, una página ocupando un marco es sacada de memoria </li></ul></ul><ul><ul><ul><li>Se escriben a disco si han sido modificadas (dirty bit) </li></ul></ul></ul><ul><ul><li>Esta acción es transparente a proceso de usuario </li></ul></ul><ul><ul><ul><li>Manejado por SO y Hardware </li></ul></ul></ul>
  5. 5. Fallos de página <ul><li>Qué ocurre si un proceso referencia una dirección virtual que se mapea a un marco que ha sido quitado a la página </li></ul><ul><ul><li>Cuando esto ocurrió bit válido de entrada en tabla de página de proceso se puso en 0 </li></ul></ul><ul><ul><li>Cuando proceso referencia entrada con bit inválido se produce Fallo de página </li></ul></ul><ul><ul><li>Fallo de Página produce una interrupción y SO ejecuta manejador de Fallo de página </li></ul></ul><ul><ul><li>Manejador </li></ul></ul><ul><ul><ul><li>Usa estructura de datos (parecida a tabla de página) que contiene bloque de disco que contiene página </li></ul></ul></ul><ul><ul><ul><li>Lee página a marco disponible, actualiza PTE </li></ul></ul></ul><ul><ul><ul><li>SO reejecuta proceso que generó Fallo de página </li></ul></ul></ul>
  6. 6. Ilustración Fallo de Página Rutina atención Fallo Página CPU i 1 2 3 4 5 6 tabla de página DISCO Memoria Física Marco pagina piezas disco Estructura datos SO
  7. 7. Pasos en Fallo de Página <ul><li>(1) Referencia a Memoria: Información de Memoria en PCB de proceso captura proceso ejecuta una referencia a memoria inválida </li></ul><ul><li>(2) Si es inválida porque es ilegal, proceso es terminado. Si no, interrupción fallo de página, se ejecuta rutina de atención </li></ul><ul><li>(3) SO encuentra marco de página libre donde cargar página de disco (SO mantiene páginas de disco asociadas a páginas de proceso en una estructura de datos manejada en SO) </li></ul><ul><li>(4) Lectura de página de disco a marco de página. Proceso se bloquea durante esta transferencia </li></ul><ul><li>(5) Cuando lectura de disco se completa, se escribe en PTE bit válido y en PCB de proceso que página esta disponible en memoria. Proceso pasa a listo </li></ul><ul><li>(6) Se ejecuta de nuevo instrucción interrumpida por fallo de página </li></ul>
  8. 8. Paginación por Demanda <ul><li>Técnica que permite otorgar páginas de memoria a procesos a medida que lo necesiten </li></ul><ul><ul><li>Similar a swapping in, pero sólo para el código y datos requerido por el proceso </li></ul></ul><ul><ul><ul><li>Lo que proceso requiere en su ejecución varía en el tiempo </li></ul></ul></ul><ul><ul><li>Procesos residen en almacenamiento secundario </li></ul></ul><ul><ul><ul><li>Cuando proceso entra en ejecución páginas se van cargando en memoria (desde disco) a medida que se necesiten </li></ul></ul></ul><ul><ul><li>SO actuales traen grupos de páginas (clusters) </li></ul></ul><ul><ul><ul><li>SO mantiene información de grupos que puede traer, compilador también ayuda </li></ul></ul></ul>
  9. 9. Reemplazo de páginas <ul><li>Cuando una página se lee de disco </li></ul><ul><ul><li>Si hay marcos de páginas libres, obtener una </li></ul></ul><ul><ul><li>Si no SO debe obtener una de las ocupadas </li></ul></ul><ul><ul><ul><li>Reemplazo de páginas </li></ul></ul></ul><ul><ul><ul><li>Algoritmos de reemplazamiento </li></ul></ul></ul><ul><ul><ul><ul><li>Obtener un marco que no se usará en el futuro cercano </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Obtener un marco que no ha sido modificada </li></ul></ul></ul></ul><ul><ul><ul><ul><li>SO trata de tener un número de marcos libres para no tener que pagar costo de reemplazo en ese momento </li></ul></ul></ul></ul>
  10. 10. Como se carga un programa? <ul><li>Crea PCB de proceso </li></ul><ul><li>Crea tabla de página </li></ul><ul><li>Pone espacio de direccionamiento en disco en piezas de tamaño de una página y construye tabla que contiene mapeo de páginas y ubicación en disco </li></ul><ul><li>Construye tabla de página (apuntada de PCB) </li></ul><ul><ul><li>Todas las PTEs con bit inválido </li></ul></ul><ul><li>Cuando proceso comienza su ejecución </li></ul><ul><ul><li>Instrucciones fallan en páginas de código y datos a medida que proceso va referenciando páginas de código y datos </li></ul></ul>
  11. 11. Parece complicado… Cómo que esto funciona? <ul><li>Cuál es la clave? </li></ul><ul><ul><li>Localidad </li></ul></ul><ul><ul><ul><li>Temporal : referencias recientes tienden a ocurrir de nuevo en el futuro cercano </li></ul></ul></ul><ul><ul><ul><li>Espacial : referencias cercanas tienden a ocurrir de nuevo en el futuro cercano </li></ul></ul></ul><ul><ul><li>Buena localidad tiene como consecuencia paginación menos frecuente </li></ul></ul><ul><ul><ul><li>Paginación en este caso vista como frecuencia de fallos de página </li></ul></ul></ul><ul><ul><ul><li>Idea es una vez que página ha sido cargada en memoria, se referencia de nuevo pronto </li></ul></ul></ul><ul><ul><ul><li>Pero esto depende de algunos factores </li></ul></ul></ul><ul><ul><ul><ul><li>Grado de localidad de aplicación </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Algoritmo de reemplazo de páginas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Cantidad de memoria física disponible en relación a lo que necesita proceso para ejecutar sin generar fallos de página </li></ul></ul></ul></ul>
  12. 12. Paginación por Demanda y Conjunto de trabajo <ul><li>Cuando proceso comienza ejecución </li></ul><ul><ul><li>Su tabla de páginas posee todas las entradas inválidas </li></ul></ul><ul><ul><li>Ninguna de sus páginas han sido mapeadas a memoria (páginas no tienen asociadas marcos de página) </li></ul></ul><ul><ul><li>Cuando proceso empieza a ejecutarse </li></ul></ul><ul><ul><ul><li>Ejecución de instrucciones generan fallos de páginas por código y datos </li></ul></ul></ul><ul><ul><ul><li>Proceso deja de generar fallos de páginas cuando tiene todas las páginas que necesita para ejecutarse </li></ul></ul></ul><ul><ul><ul><ul><li>Conjunto de trabajo cargado en memoria </li></ul></ul></ul></ul>
  13. 13. Cuando la Memoria es Escasa? <ul><li>Cuando queda poca memoria física libre, y nuevo proceso se ejecuta </li></ul><ul><ul><li>Nuevo proceso genera fallos de páginas para cargar working set </li></ul></ul><ul><ul><ul><li>Si SO tiene marcos de páginas libres los otorga a proceso </li></ul></ul></ul><ul><ul><li>Si no hay memoria, SO debe liberar páginas (marcos asociados a páginas) de otros procesos o sí mismo (pasarlos a disco) para otorgarse las a nuevo proceso </li></ul></ul><ul><ul><ul><li>Sólo se necesitan escribir si páginas han sido modificadas </li></ul></ul></ul><ul><ul><ul><li>SO realiza movimiento de páginas memoria/disco </li></ul></ul></ul><ul><ul><ul><ul><li>Transparente a aplicación </li></ul></ul></ul></ul><ul><ul><ul><li>Que páginas elegir para reemplazar? </li></ul></ul></ul><ul><ul><ul><ul><li>Algoritmos de reemplazo de páginas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Generalmente SO mantiene una lista de marcos libres y cuando esta baja de un umbral ejecuta algoritmo de reemplazo </li></ul></ul></ul></ul>
  14. 14. Fallo de Páginas 2 <ul><li>Qué ocurre con un proceso que referencia a dirección virtual en una página, cuyo marco de página ha sido reemplazado? </li></ul><ul><ul><li>Cuando página fue reemplazada, el SO puso la página como inválida (usando bit válido) en la entrada en la tabla de páginas </li></ul></ul><ul><ul><li>Cuando proceso accesa la página, el bit inválido de la entrada en tabla de página produce una excepción (fallo de página) </li></ul></ul><ul><ul><li>SO ejecuta el manejador de fallo de página </li></ul></ul><ul><ul><ul><li>Si SO no posee marcos de páginas libres debe quitar una página a un proceso para dar a proceso que la requiere </li></ul></ul></ul><ul><ul><ul><li>Generalmente SO mantiene una lista de marcos libres y cuando esta baja de un umbral ejecuta algoritmo de reemplazo </li></ul></ul></ul>
  15. 15. Reemplazamiento de Páginas <ul><li>Objetivos de los algoritmos de reemplazamiento de páginas </li></ul><ul><ul><li>Disminuir la razón de fallos de páginas seleccionando la mejor página “víctima” para reemplazo </li></ul></ul><ul><ul><li>Ideal: La mejor página “víctima” es una que no volverá a ser referenciada nunca </li></ul></ul><ul><ul><ul><li>Proceso que la posee no generará fallo de página referenciándola </li></ul></ul></ul>
  16. 16. Algoritmos de Reemplazo Optimo Algoritmo de Belady <ul><li>Misma idea de SJF (algoritmo de planificación de procesos) </li></ul><ul><ul><li>Seleccionar página que no será referenciada por el tiempo más largo en el futuro </li></ul></ul><ul><ul><li>Problema: No se puede predecir el futuro </li></ul></ul><ul><li>Por que es útil este algoritmo? </li></ul><ul><ul><li>Sirve como referencia para comparar otros algoritmos </li></ul></ul><ul><li>Existe el mejor algoritmo </li></ul><ul><ul><li>No, depende de carga de trabajo </li></ul></ul><ul><li>Existe el peor algoritmo </li></ul><ul><ul><li>No, pero algoritmo aleatorio es uno de los malos </li></ul></ul><ul><li>Por intuición si un sistema tiene más marcos de páginas disponibles, cualquiera sea el algoritmo de reemplazo de páginas ocurrirán menos fallos de páginas </li></ul><ul><ul><li>Esto no se cumple siempre, a veces puede aumentar Esto se conoce como la anomalía de Belady </li></ul></ul>
  17. 17. Algoritmo de Reemplazo 2 : FIFO <ul><li>Fácil de implementar </li></ul><ul><ul><li>Lista de páginas del sistema </li></ul></ul><ul><ul><ul><li>Cuando SO asigna marco a página ponerla al final de la lista </li></ul></ul></ul><ul><ul><ul><li>Cuando SO tiene que reemplazar página, saca la primera de la lista </li></ul></ul></ul><ul><li>Por que podría ser bueno? </li></ul><ul><ul><li>Quizás la página que entró a memoria primero ahora no se necesita </li></ul></ul><ul><li>Por que podría ser malo? </li></ul><ul><ul><li>Quizás página esta en uso </li></ul></ul><ul><ul><li>No hay información en absoluto </li></ul></ul><ul><ul><li>Podría exponer anomalía de Belady </li></ul></ul>
  18. 18. Algoritmo de Reemplazo 3 : Least Recently Used (LRU) <ul><li>LRU usa información acerca de referencias para decidir que página es mejor como víctima </li></ul><ul><ul><li>Idea: Referencias pasadas dan una idea del comportamiento futuro </li></ul></ul><ul><ul><li>En reemplazo. elegir página que no ha sido usada por el mayor tiempo </li></ul></ul><ul><ul><ul><li>LRU mira pasado y Belady mira futuro </li></ul></ul></ul><ul><ul><li>Implementación </li></ul></ul><ul><ul><ul><li>Idealmente: Poner una marca de tiempo (timestamp) en cada referencia a memoria y poner esta información en entrada de página, ordenar búsqueda de acuerdo a marca de tiempo </li></ul></ul></ul><ul><ul><ul><ul><li>Muy cara </li></ul></ul></ul></ul><ul><ul><ul><li>En la práctica: Una aproximación </li></ul></ul></ul>
  19. 19. Aproximación para LRU <ul><li>Muchas aproximaciones, todas usan bit R </li></ul><ul><ul><li>Mantener un contador por cada página </li></ul></ul><ul><ul><ul><li>Periódicamente para cada página </li></ul></ul></ul><ul><ul><ul><ul><li>(1) If R == 0 then incrementar contador (no se ha usado) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>(2) If R == 1 then contador = 0 (se ha usado) </li></ul></ul></ul></ul><ul><ul><ul><li>Contador mantiene número de intervalos desde la última referencia </li></ul></ul></ul><ul><ul><ul><ul><li>Página con mayor contador es la menos recientemente usada </li></ul></ul></ul></ul><ul><ul><ul><li>Implementación es cara. Copia de registro, SO mantención, cambio contexto, búsqueda página en tabla para reemplazo </li></ul></ul></ul>
  20. 20. Algoritmo de Reemplazo 4 : LRU Reloj <ul><li>LRU con Reloj. Página no usada recientemente o Segunda Oportunidad </li></ul><ul><ul><li>Reemplazar una página que es de las más viejas </li></ul></ul><ul><ul><li>Organizar los marcos de páginas en una cola circular FIFO y recorrer cola buscando víctima de la siguiente manera </li></ul></ul><ul><ul><ul><li>Si bit R = 0 página es elegida para reemplazo </li></ul></ul></ul><ul><ul><ul><li>Si bit R = 1 página ha sido usada, darle segunda oportunidad y poner bit en 0 y seguir con la siguiente página </li></ul></ul></ul><ul><ul><li>Puntero que recorre cola se mueve rápido cuando hay necesidad de páginas </li></ul></ul><ul><ul><li>Si hay mucha memoria libre… baja sobrecarga </li></ul></ul><ul><ul><li>Si la memoria física es grande mas difícil de lograrlo bien </li></ul></ul><ul><ul><ul><li>Solución: agregar más punteros para elegir víctima </li></ul></ul></ul>
  21. 21. Asignando Marcos de Páginas <ul><li>En un sistema multiprogramado se necesita entregar memoria a procesos que compiten por su asignación </li></ul><ul><ul><li>De donde elegir víctimas de mismo proceso o diferente? </li></ul></ul><ul><li>Algoritmos de espacio fijo ( Local ) </li></ul><ul><ul><li>Cada proceso tiene un límite de páginas que puede usar </li></ul></ul><ul><ul><li>Cuando proceso alcanza límite, páginas víctimas son extraídas del mismo proceso </li></ul></ul><ul><ul><li>Procesos grandes que requieren muchas de sus páginas en memoria pueden sufrir </li></ul></ul>
  22. 22. Asignando Marcos de Páginas cont <ul><li>Algoritmos de espacio variable ( Global ) </li></ul><ul><ul><li>Conjunto de páginas necesitadas por proceso varía en el tiempo (tamaños de working sets cambian) </li></ul></ul><ul><ul><li>Reemplazo global, página víctima puede provenir de cualquier proceso </li></ul></ul><ul><ul><ul><li>Algunos procesos pueden entorpecer ejecución del resto </li></ul></ul></ul><ul><ul><ul><ul><li>Linux usa este algoritmo </li></ul></ul></ul></ul>
  23. 23. Conjunto de trabajo ( Working set ) <ul><li>El working set de un proceso se utiliza para modelar la localidad dinámica de su uso de memoria </li></ul><ul><li>Idea : Examinar conjunto de referencias a memoria más recientes y mantener en memoria WS de procesos en el tiempo con el objetivo de disminuir fallos de página </li></ul><ul><li>Working set de un proceso varía en el tiempo de acuerdo a su localidad </li></ul><ul><li>Definición: </li></ul><ul><ul><li>WS(t,w) = { páginas P tal que P fue referenciada en periodo de tiempo (t, t-w) } </li></ul></ul><ul><ul><li>t es tiempo y w es la ventana del working set. Página p está en WS sólo si fue refereciada en las últimas w referencias </li></ul></ul>
  24. 24. Conjunto de trabajo <ul><li>Ejemplo: Ventana de 10 referencias </li></ul><ul><ul><li>Tamaño de conjunto de trabajo = 4 </li></ul></ul><ul><li>Qué ocurre con el tamaño de conjunto de trabajo cuando disminuye su localidad o expone mala localidad? </li></ul><ul><li>Por intuición, el conjunto de trabajo debe estar en memoria si no entonces habrían muchos fallos de página (thrashing) </li></ul><ul><ul><li>Cuando alguien pregunta: Cuánta memoria necesita firefox? la pregunta es mas bien, cuál es el tamaño promedio ( o peor caso) del conjunto de trabajo de firefox? </li></ul></ul>WS(t1,10) = {1, 2, 5, 7} 2 1 5 7 7 7 7 7 5 1 6 2 9 3 7
  25. 25. Algoritmo de Reemplazo 5: usando Conjunto de trabajo ( Working Set ) <ul><li>El working set de un proceso cambia con la localidad de proceso </li></ul><ul><ul><li>Durante periodos de poca localidad, frecuencia de fallos de páginas aumenta </li></ul></ul><ul><ul><li>Durante este periodo tamaño de working set es grande </li></ul></ul><ul><ul><li>Intuición dice que el working set de un proceso debe estar en memoria para disminuir notablemente el número de fallos de página </li></ul></ul><ul><ul><li>Usa LRU clock para asegurarse de tener páginas correctas en WS </li></ul></ul><ul><ul><li>Algoritmo </li></ul></ul><ul><ul><ul><li>Iniciar nuevo proceso sólo si su working set cabe en memoria </li></ul></ul></ul><ul><ul><ul><ul><li>Si suma de working sets de procesos excede memoria física, entonces se puede suspender un proceso y ejecutarlo más tarde </li></ul></ul></ul></ul><ul><ul><ul><li>Cuál debería ser la ventana para conjunto de trabajo de proceso? </li></ul></ul></ul>
  26. 26. Algoritmo de Reemplazo 6: Frecuencia de Fallo de Página <ul><li>Algoritmo de espacio variable </li></ul><ul><ul><li>Monitorear la frecuencia de fallo de página de proceso </li></ul></ul><ul><ul><li>Si la frecuencia pasa un umbral superior darle más memoria </li></ul></ul><ul><ul><li>Si la frecuencia baja de un umbral inferior quitarle memoria al proceso </li></ul></ul><ul><ul><ul><li>Proceso debería fallar más, pero permitir que otro proceso falle menos </li></ul></ul></ul><ul><ul><li>No funciona siempre </li></ul></ul>
  27. 27. Frecuencia fallos de página Número de marcos asignados por proceso Razón de fallos de página Umbral superior Umbral inferior Aumentar número de marcos Disminuir número de marcos
  28. 28. Fallos de página Número de marcos asignados por proceso Número de referencias a memoria entre fallos de página Qué pasa? Qué pasa? Donde es mejor operación?
  29. 29. Rendimiento con Paginación con Demanda <ul><li>Si no hay fallos de página </li></ul><ul><ul><li>Tiempo efectivo de acceso a memoria depende de : </li></ul></ul><ul><ul><ul><li>tasa de aciertos (hits) de caches (datos y/o TLB) </li></ul></ul></ul><ul><ul><ul><li>costos en tiempo de acceso a caches y memoria </li></ul></ul></ul><ul><ul><li>En general se define como </li></ul></ul><ul><ul><li>Tiempo efectivo de acceso a memoria =TEAM </li></ul></ul><ul><ul><li>TEAM = %aciertos*(costo acierto) + %fallas*(costo falla) </li></ul></ul><ul><li>Si hay fallos de página </li></ul><ul><ul><li>Tiempo de acceso efectivo = (1 – p)*TEAM + p*(costo fallo de página) </li></ul></ul><ul><ul><ul><li>donde p es la probabilidad de fallos de páginas </li></ul></ul></ul>
  30. 30. Hiperpaginación <ul><li>Cuando un proceso tiene una alta razón de fallo de páginas </li></ul><ul><ul><li>SO pasa mucho tiempo atendiendo fallos de página (pasando páginas de disco a memoria y viceversa) </li></ul></ul><ul><ul><li>La CPU esta principalmente utilizada haciendo trabajo de administración que trabajo útil </li></ul></ul><ul><ul><li>Podría ser simplemente que sistema no cuenta con la memoria necesaria para atender a todos los procesos </li></ul></ul><ul><li>Puntos importantes </li></ul><ul><ul><li>Si sistema tiene mucha memoria </li></ul></ul><ul><ul><ul><li>Algoritmo de reemplazo no tiene tanta incidencia </li></ul></ul></ul><ul><ul><ul><li>Si no entonces algoritmo de reemplazo si la tiene </li></ul></ul></ul>
  31. 31. Hiperpaginación Numero de procesos activos Nivel de multiprogramación %Utilización de CPU o Productividad (reqs/segs) Qué ocurre aquí?
  32. 32. Resumen <ul><li>Paginación por demanda </li></ul><ul><ul><li>Inicialmente proceso no tiene páginas cargadas, SO las carga a medida que proceso lo necesita (a través de fallos de página) </li></ul></ul><ul><li>Algoritmos de reemplazo de páginas </li></ul><ul><ul><li>Belady : Óptimo, pero no se puede realizar </li></ul></ul><ul><ul><li>FIFO: reemplazar página que fue cargada hace más tiempo </li></ul></ul><ul><ul><li>LRU: reemplazar página que fue referenciada hace más tiempo </li></ul></ul><ul><ul><li>LRU reloj: reemplazo LRU con segunda oportunidad </li></ul></ul><ul><ul><li>Working Set: mantener en memoria páginas que incluyen menor razón de fallo de página </li></ul></ul><ul><ul><li>Frecuencia de Fallo de páginas: variar número de marcos en base a umbrales de fallos de páginas </li></ul></ul><ul><li>Reemplazamiento local o global </li></ul>

×