c9 memoria virtual - cime.cl1 antecedentes • memoria virtual: consiste en la separación de la...

64
Sistemas Operativos 9 Memoria Virtual Prof. Javier Cañas R.

Upload: others

Post on 15-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Sistemas Operativos9 Memoria Virtual

Prof. Javier Cañas R.

Page 2: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Nota

• El texto guía es: Operating System Concepts, Eight Edition, Avi Silberschatz, Peter Baer Galvin, Greg Gagne

• Estas PPT están basadas en las PPT originales que el autor del texto guía mantiene en: http://www.os-book.com/

Copyright Note

The slides below are copyright Silberschatz, Galvin and Gagne, 2008. The slides are authorized for personal use, and for use in conjunction with a course for which Operating System Concepts is the prescribed text. Instructors are free to modify the slides to their taste, as long as the modified slides acknowledge the source and the fact that they have been modified. Paper copies of the slides may be sold strictly at the price of reproduction, to students of courses where the book is the prescribed text. Any use that differs from the above, and any for profit sale of the slides (in any form) requires the consent of the copyright owners; contact Avi Silberschatz ([email protected]) to obtain the copyright owners consent.

Page 3: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Temario

1. Antecedentes

2. Paginación por demanda

3. Copia en Escritura

4. Reemplazo de Páginas

5. Asignación dr Frames

6. Thrashing

Page 4: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Objetivos

• Describir los beneficios de los sistemas de memoria virtual

• Explicar los conceptos de paginación por demanda, algoritmos de reemplazo de página y asignación de marcos de páginas.

• Discutir el principio del modelo Working-Set.

Page 5: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

1 Antecedentes

• Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real:

• Sólo una parte del programa necesita estar en memria para ejecución.

• El espacio lógico puede ser mucho mayor que el espacio físico.

• Permite compartir espacios de direcciones entre varios procesos.

• La creación de procesos es más eficiente.

Page 6: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Antecedentes

• La memoria virtual se puede implementar vía:

• Paginación por demanda

• Segmentación por demanda

Page 7: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

La memoria virtual es más grande que la física

Page 8: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

El espacio de direcciones virtuales

Page 9: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Biblioteca compartida usando memoria Virtual

System libraries Share memory Process creation

with fork()

Page 10: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

2 Paginación por Demanda

• Consiste en llevar páginas a memoria sólo cuando éstas se necesitan. Con esto se logra:

• Menor necesidad de I/O

• Menor necesidad de memoria

• Respuesta más rápida

• mayor número de usuarios

Page 11: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Paginación por demanda

• Si una página se necesita, se referencia:

• Si la referencia es inválida: se aborta

• Si la página no está en memoria, se trae

• Swapper perezoso: nunca intercambia una página a memoria a menos que se necesite.

• Un Swapper que se relacione con páginas se llama pager.

Page 12: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Transferencia de una memoria paginada a espacio contiguo de

disco

Page 13: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Bit válido-inválido Cada entrada de la T. de Página tiene asociado un bit Válido-Inválido

(v ⇒ en-memoria, i ⇒ no-en-memoria)

Inicialmente el bit valid–invalid bit se inicializa en i en todas las entradas Ejemplo de Tabla de Página:

Durante el cálculo de dirección, si el bit válido-inválido es I ⇒ falla de página

vvvvi

ii

….

Frame # valid-invalid bit

page table

Page 14: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Tabla de Página cuando algunas páginas no están en memoria

Page 15: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Falla ¿Qué pasa si un proceso intenta un acceso a una página que no está en

memoria? Un acceso a una página inválida genera falla de página Si el bit está marcado inválido se genera trap al SO1. El SO busca en otra tabla (en PCB) para decidir si la referencia es válida:

Referencia inválida ⇒ aborta

No está en memoria2. Tomar un frame libre3. Intercambiar la página al frame (Swap)4. Reset de tablas5. Poner bit válido como= v6. Reinicializar la instrucción que generó la falla

Page 16: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Falla de Página

• Un requisito fundamental de la paginación por demanda es la habilidad de re iniciar una instrucción después de una falla de página:

• Si la falla ocurre durante el fetch, se re inicia haciendo un fetch nuevamente.

• Si la falla ocurre en un fetch de operando, se debe hacer nuevamente el fetch (IF) y la decodificación (ID) y después el fetch de operando.

Page 17: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Falla

• Ejemplo de peores casos:

• movimiento de bloques

• Instrucciones con tres direcciones:

add, A, B, C (A ←B+C)

Page 18: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Secuencia en manejo de falla de página

Page 19: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Desempeño de la paginación por demanda

• Tasa de fallas de página: 0≤ p ≤1.0

• Si p=0 no hay fallas de página

• Si p=1, cada referencia genera falla

• Tiempo de Acceso Efectivo (TAE)

TAE=(1-p) × acceso_memoria + p × ( overhead_falla + swap_out_página + swap_in_página + overhead_restart)

Page 20: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo Tiempo acceso memoria = 200 nseg

promedio servicio falla = 8 mseg.

TAE = (1 – p) x 200 + p (8 mseg) = (1 – p x 200 + p x 8,000,000 = 200 + p x 7,999,800

Si un acceso de 1,000 genera una falla de página, entonces

TAE = 8.2 μseg. La velocidad se frena por un factor de 40!!

Page 21: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

3 Copia en Escritura

• Un beneficio adicional de la memoria virtual es un menor tiempo para la creación de procesos. Esto se logra con la técnica de Copia en Escritura (COW Copy-on-Write).

• La llamada al sistema fork() genera un proceso hijo que es una copia de su padre.

• COW permite que inicialmente padre e hijo compartan las mismas páginas de memoria.

Page 22: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... COW

• Estas páginas están marcadas como Copia-en-escritura. Si cualquiera de los procesos escribe en una página compartida, se genera una copia de la página compartida.

• COW permite mayor eficiencia en la creación de procesos. Solo se copian páginas modificadas.

• Páginas libres se asignan desde un pool de “páginas en cero”. Las páginas demandadas se ponen en “cero” antes de la asignación.

Page 23: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Antes que el Proceso 1 modifique página C

Page 24: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Después que el Proceso 1 modificó página C

Page 25: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

4 Reemplazo de Páginas

• Si un proceso de 10 páginas actualmente sólo usa la mitad de ellas, entonces, la paginación por demanda ahorra el I/O necesario de cargar 5 páginas que no se utilizarán.

• Esto implica que podemos aumentar el grado de multiprogramación, corriendo el doble de procesos.

Page 26: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Sobre-asignación

• Si aumentamos el grado de multiprogramación, estamos sobre asignando memoria.

• Al sobre-asignar, si ocurre una falla de página, la página requerida está en disco, pero no hay frames libres (ver figura).

• Es necesario prevenir sobre-asignación modificando la falla de página para incluir reemplazo.

• Usar el bit de modificación (dirty bit) para reducir el overhead en transferencia de páginas a disco.

Page 27: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Caso: No hay frames libres!

• La completa separación de los espacios lógicos y físicos se completa con reemplazo de página. Una gran memoria virtual se puede lograr en una memoria física pequeña.

• Reemplazo de página: encontrar una página que no esté en uso y volverla al disco.

Page 28: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Reemplazo de páginas

• Se requiere:

• Un algoritmo

• Desempeño: el mejor algoritmo resulta en el mínimos de fallas de página.

• Algunas páginas se traerán a memoria varias veces.

Page 29: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Reemplazo de Páginas

Page 30: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Procedimiento de Reemplazo

1. Encontrar la ubicación de la página solicitada en disco

2. Encontrar un frame libre:

• Si hay un frame libre, utilizarlo

• Si no hay usar algoritmo de reemplazo de página para seleccionar un frame víctima

3. Traer la página al nuevo frame libre. Actualizar tabla de página.

4. Recomenzar

Page 31: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Reemplazo de Página

Page 32: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Algoritmos de reemplazo de Página

• Se desea la menor tasa de fallas de página

• Los algoritmos se evalúan corriendo un string de referencias a memoria (string de referencia) y calculando el número de fallas de página.

• Para todos los ejemplos se considerará el siguiente string de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.

• Notación: M(m,r)={páginas}, donde m= número de frame y r es el índice del string de referencia (comienza en 1).

Page 33: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Número de fallas de página vs número de frames

• En la medida que aumenta el número de frames, el número de fallas de página baja a un nivel mínimo.

Page 34: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Algoritmo FIFO: First-in-First-out

String de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 frames (3 páginas en memoria por proceso)

4 frames

Anomalía de Belady: más frames ⇒ más fallas de página

1

2

3

1

2

3

4

1

2

5

3

4

9 fallas de página

1

2

3

1

2

3

5

1

2

4

5 10 page faults

44 3

Page 35: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo reemplazo FIFO

M(3,5)={0,1,2}

Page 36: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Anomalía de Belady en FIFO

Page 37: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Algoritmo Óptimo

1

2

3

4

6 page faults

4 5

La página que se reemplaza es la que no se usará en el período más grande de tiempo

Ejemplo con 4 frames

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

¿Cómo se puede saber? Se utiliza como referencia para comparar algoritmos

Page 38: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo

Page 39: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Algoritmo LRU

• LRU: Least Recently Used, Menos Recientemente Usada.

• Ejemplo: String de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

5

2

4

3

1

2

3

4

1

2

5

4

1

2

5

3

1

2

4

3

Page 40: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo

Page 41: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Implementación con contador

• Cada entrada de la página tiene un contador; toda vez que la página es referenciada en esta entrada, se copia el reloj en el contador.

• Cuando se necesita cambiar una página, se observan los contadores.

• Se requiere una búsqueda en la tabla y una escritura en memoria.

Page 42: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Implementación con Stack

• Se mantiene un Stack con los números de página en una lista doblemente enlazada:

• Si la página es referenciada:

‣ Mover al tope de stack

‣ Se requiere cambiar 6 punteros

• No se requiere buscar para reemplazar

• Sacar una página y ponerla en el tope significa en el peor caso cambiar 6 punteros!

Page 43: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo de uso de Stack

Page 44: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Repaso ¿Qué significa sobre asignación de memoria (over-

allocating)?Dado: 1, 2, 5, 3, 4, 2, 5, 3, 2, 1, 2, 5, calcular M(4,8)

usando algoritmo OPT ¿En qué consiste la anomalía de Belady?Que propiedad tiene un algoritomo de Stack de reemplazo de

página? ¿Cómo se puede implementar LRU? ¿Qué es el “dirty” bit?

Page 45: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Aproximaciones a LRU

• Bit de referencia:

• A cada página se asocia un bit. inicialmente en cero.

• Cuando una página es referenciada, el bit se pone en 1.

• Reemplazar la página que tiene bit de referencia en cero (si existe).

• No se conoce el orden

Page 46: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

...Aproximaciones a LRU

• Segunda oportunidad:

• Se necesita un bit de referencia: si la página es seleccionada para reemplazo, se inspecciona el bit de referencia. Si el bit es cero, se reemplaza esta página. Si el bit es 1, se le da na nueva oportunidad a esta página y se selecciona la siguiente.

• Reemplazo orden de reloj: El puntero avanza como un reloj.

• Si la página a reemplazar (en orden de reloj) tiene el bit de referencia en 1:

• Se fija en cero el bit• La página queda en memoria• Reemplazar la siguiente (orden reloj), sujeta a las mismas reglas.

Page 47: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Reemplazo “segunda oportunidad” (Reloj)

Page 48: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Algoritmos de Conteo

• Mantener un contador del número de referencias realizadas a cada página.

• Algoritmo LFU (Least Frequently Used): reemplazar la página con el menor contador.

• Algoritmo MFU (Most Frequently Used): se basa en el argumento que la página con el contador menor probablemente será necesitada y usada a la brevedad.

• Tanto LFU como MFU sus implementaciones son caras y no se aproximan al algoritmo óptimo.

Page 49: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

5 Asignación de Frames

• Cada proceso necesita un mínimo número de páginas.

• Ejemplo: IBM 370 necesita 6 páginas para soportar la instrucción SS MOVE:

• SS MOVE ocupa 6B, que puede ocupar 2 páginas

• 2 páginas para manejar “desde”

• 2 páginas para manejar “hacia”

• Existen dos esquemas de asignación: fija y por prioridad.

Page 50: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Asignación Fija

• Asignación igualitaria: Por ejemplo, si hay 100 frames y 5 procesos, a cada uno le corresponden 20 frames.

• Asignación proporcional: Se asignan frames acorde al tamaño de los procesos

- Sea si= tamaño del proceso pi

- S=∑si

- m= número total de frames

- ai= asignación a pi=(si/S)×m

!

m = 64

s1

= 10

s2

= 127

a1

=10

137" 64 # 5

a2

=127

137" 64 # 59

Page 51: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Asignación por Prioridad

• Se utiliza la asignación proporcional, pero en vez del tamaño del proceso se utiliza su prioridad

Page 52: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Asignación Global vs Local

• Si el proceso P1 genera una falla de página:

‣ Seleccionar para reemplazo uno de sus frames

‣ Seleccionar un frame de un proceso con la prioridad más baja

• Reemplazo Global: se escoge un frame del conjunto de todos los frames. Un proceso puede tomar un frame de otro proceso.

• Reemplazo Local: cada proceso selecciona frames sólo de sus frames asignados.

Page 53: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

6 Thrashing

• Si un proceso no tiene las páginas suficientes, el número de fallas de página puede llegar a ser muy alto. La consecuencia es:

• Baja utilización de CPU

• El SO llega a pensar que debe aumentar el grado de multiprogramación y agrega otro proceso al sistema...

• Thrashing: el proceso está muy ocupado haciendo intercambio de páginas entre memoria y disco.

Page 54: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Thrashing

Page 55: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Paginación por demanda y Thrashing

• ¿Por qué funciona la paginación por demanda?

Rp: porque existe un modelo de localidad

• Los procesos cambian de una localidad a otra.

• Las localidades pueden traslaparse

• ¿Por que ocurre thrashing?

Rp: porque: ∑ (tamaños de localidades) > tamaño memoria

Page 56: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ejemplo de localidades en un patrón de referencias a memoria

Page 57: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

El Modelo Working-Set Δ ≡ ventana working-set ≡ número fijo de páginas referenciadas

Ejemplo: 10,000 instrucciones

WSSi (working set del Proceso Pi) =número total de páginas referenciadas en el Δ más reciente (varia en el tiempo) Si Δ muy pequeño no abarcará la localidad completa Si Δ muy grade, abarcara varias localidades Si Δ = ∞ ⇒ abarcará el programa completo

Sea: D = Σ WSSi ≡ el total de frames demandados

‣ Si D > m ⇒ Thrashing

‣ Política: SiD > m, suspender uno de los procesos

Page 58: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Modelo W-S

Page 59: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Conocer en todo momento el Working-Set• Se puede aproximar con un timer más un bit

de referencia.

• Ejemplo: Δ=10.000 referencias

• El timer interrumpe cada 5000 unidades de tiempo.

• Se mantienen 2 bits por cada página en memoria (bits de historia)

• Toda vez que el timer interrumpe, se copian lo bits a memoria y se fijan todos los bits de referencia en cero.

• Si uno de los bits en memoria está en uno, la página está en el Working Set

Page 60: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

... Conocer en todo

• Este método no es completamente exacto. ¿Por qué?

• Se puede mejorar usando 10 bits de historia e interrumpiendo cada 1000 unidades de tiempo.

Page 61: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Ajustes de Fallas de Página

• Es necesario establecer una tasa aceptable de fallas de página:

• Si la tasa actual es baja, los procesos pueden perder frames.

• Si es muy alta, deben ganar frames

Page 62: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

WS y fallas de página

Page 63: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Unix y Mac OS X

• vm_stat (Mac OS X). En Unix vmstat

Page 64: C9 Memoria Virtual - cime.cl1 Antecedentes • Memoria virtual: consiste en la separación de la memoria lógica (usuario) de la memoria real: • Sólo una parte del programa necesita

Sistemas Operativos9 Memoria Virtual

Prof. Javier Cañas R.