Sistemas Operativos La memoria virtual La memoria virtual If it’s there and you can see it - it’s real If it’s not there and you.

Download Report

Transcript Sistemas Operativos La memoria virtual La memoria virtual If it’s there and you can see it - it’s real If it’s not there and you.

Sistemas Operativos
La memoria virtual
La memoria virtual
If it’s there and you can see it
- it’s real
If it’s not there and you can see it
- it’s virtual
If it’s there and you can’t see it
- it’s transparent
If it’s not there and you can´t see it
- you erased it!
IBM poster explaining virtual memory, circa 1978
Diapo. No. 1
Sistemas Operativos
La memoria virtual
Características memoria virtual
programa
1M
computadora
512K en RAM
Programas muy grandes no caben en memoria disponible:
solución: dividir programa en partes (capas)
capa 0: se ejecuta primero
termina
se llama la capa 1
Capas se mantienen en disco (zona de swap) y se intercambian
con la memoria por medio del sistema operativo
Diapo. No. 2
Sistemas Operativos
La memoria virtual
Aspectos a tomar en cuenta
• Responsabilidades:
– Intercambio capas disco/memoria: sist. operativo
– Dividir programa: programador
• Originalidad
– división programa responsabilidad del sistema
– método diseñado por Fotheringham (1961)
– método conocido como memoria virtual
• Principio
– Sistema operativo mantiene en memoria aquellas
partes del programa que se usen (referencien) y el
resto permanece en disco
– direcciones generadas dentro de un programa
mediante índices, registros base, de segmento y
otros, se denominan espacio direcciones virtuales
– las direcciones de la memoria disponible
(memoria física) se conocen con el nombre de
direcciones físicas
Diapo. No. 3
Sistemas Operativos
La memoria virtual
– si no hay memoria virtual:
• la dirección virtual es la dirección física
– con memoria virtual
• es necesario saber que dirección física le
corresponde a la dirección virtual
• Métodos
– paginación
– segmentación
Diapo. No. 4
CPU
Unidad admon.
de memoria
La MMI envía las direcciones
físicas a la memoria
Tarjeta CPU
Memoria
La CPU envía las direcciones
virtuales a la MMU
Controlador
de disco
BUS
Sistemas Operativos
La memoria virtual
Diapo. No. 5
Sistemas Operativos
La memoria virtual
La paginación
- Espacio direcciones virtuales se divide en unidades
llamadas páginas.
- Las unidades correspondientes en memoria física se
llaman marcos para páginas
- Las páginas y los marcos tienen siempre el mismo tamaño.
- Fallo de página:
pagina no asociada con algún marco
Diapo. No. 6
Sistemas Operativos
La memoria virtual
pag 0
pag 1
pag 2
.
.
.
.
pag n
memoria
virtual
mapa de
memoria
memoria
física
disco
Diapo. No. 7
Sistemas Operativos
La memoria virtual
0
1
2
0
A
marca válido
no - válido 3
4 v
C
0
1
4
5
i
6
3
D
2
6 v
i
4
E
3
4
i
5
F
5
9 v
9
G
6
i
10
7
i
11
1
2
6
7
B
H
memoria
lógica
tabla de
páginas
A
C
7
8
F
C
A
B
D
E
F
12
13
memoria 14
física
(RAM) 15
disco
Diapo. No. 8
Sistemas Operativos
La memoria virtual
programa
A
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
0
2
1
2
2
2
3
programa
B
memoria RAM
disco
Diapo. No. 9
Sistemas Operativos
La memoria virtual
bit de
validez /
no validez
marco
0
H
1 cargar M
2
J
3
M
3 v
4 v
0 monitor
5 v
1
i
memoria
lógica para Tabla de
el usuario 1 páginas para
el usuario 1
bit de
marco
validez /
no validez
0
A
1
B
2
C
3
D
memoria
lógica para
el usuario 2
3 v
4 v
5 v
i
2
3
D
H
B
4 cargar M
5
J
6
A
7
E
M
memoria
física
Tabla de
páginas para
el usuario 1
Diapo. No. 10
Sistemas Operativos
La memoria virtual
Intercambiar
a disco la
página
víctima
bit de
validez /
no validez
marco
1
cambiar a
2 no válido
0
i
f
v
víctima
f
4
tabla de
páginas
3
restablece
r la tabla
por la
nueva
página
Inter
cambiar a
la
memoria
la página
adecuada
memoria
física
Diapo. No. 11
Sistemas Operativos
La memoria virtual
Ejemplo paginación
Direcciones en la
memoria fisica
Espacio de
direcciones virtuales
0- 4k
4K- 8K
8K-12K
12K-16K
16K-20K
20K-24K
24K-28K
28K-32K
32K-36K
36K-40K
40K-44K
44K-48K
48K-52K
52K-56K
56K-60K
60K-64K
2
1
6
0
4
3
x
x
x
5
x
7
x
x
x
x
0- 4k
4K- 8K
8K-12K
12K-16K
16K-20K
20K-24K
24K-28K
} 28K-32K
Marco para página
Página virtual
}
Diapo. No. 12
Sistemas Operativos
0
La memoria virtual
1 2
3
4
5
6
7
8
9 10 11 12 13 14 15 16
0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0
Página virtual = 2 se utiliza
como un índice en la tabla de
páginas.
Bit presente/ausente
Tabla de
páginas
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
010
001
110
000
100
011
000
000
000
101
000
111
000
000
000
000
1
1
1
1
1
1
0
0
0
1
0
1
0
0
0
0
Dirección virtual
de entrada (16 bits)
(8196)
110
El ajuste de 12
bits se copia en
forma directa
de la entrada a
la salida
16 páginas de 4K
Dirección física
de salida (15 bits)
(24580)
1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 1 2 3
4 5 6 7 8 9 10 11 12 13 14 15
Diapo. No. 13
Sistemas Operativos
La memoria virtual
Tabla de páginas
de segundo nivel
Hacia las
páginas
Tabla superior:
c/entrada = 4M
=> se tienen 4G de direcciones virtuales
232 = 4,294,967,296 = 4G
Tabla de páginas
de nivel superior
Bits
10
10
PT 1
PT 2
12
Offset
0
1
2
3
PT 1
4
5
6
7
(a)
1023
0
1
2
3
4
5
6
7
Tabla de
páginas para
los 4 M superiores de la
memoria
1023
(b)
(a) Una dirección de 32 bits con dos campos para la tabla de páginas.
(b) Tablas de páginas de dos niveles
Diapo. No. 14
Sistemas Operativos
La memoria virtual
Ejemplo direccionamiento
Espacio direcciones virtuales: 232 = 4,294,967,296 = 4G
Ejemplo dirección virtual: 0x00403004 = 0000 0000 0100 0000 0011 0000 0000 0100
=>
PT1 = 1 PT2 = 3 Offset = 4
0
tabla 0
4M -1
4M
12292 (dir. abs 4,206,592)
a
16383 (dir. abs 4, 210,687)
x
PT2 = 3
PT1 = 1
1
8M
tabla 1
:
x contiene el número
de marco de la página
con dirección 0x00403004
tabla 1023
Diapo. No. 15
Sistemas Operativos
La memoria virtual
Compartiendo páginas
- Posibilidad de compartir código en común
- Importante en tiempo compartido
ed1
Contexto del
proceso p1
ed2
ed3
Tabla
Páginas
de p1
3
4
6
1
0
1
2
datos1
ed1
Contexto del
proceso p2
ed2
ed3
Tabla
Páginas
de p2
3
4
6
7
datos2
datos 1
3
datos 3
ed1
4
ed2
5
6
7
ed3
datos2
8
9
ed1
Contexto del
proceso p3
ed2
ed3
Tabla
Páginas
de p3
3
4
6
2
10
datos3
Diapo. No. 16
Sistemas Operativos
La memoria virtual
Desempeño paginación por demanda
• Paginación por demanda puede tener un efecto
importante sobre el desempeño de un sistema
• Necesario calcular el tiempo de acceso efectivo
• Tiempo acceso memoria (am) varía entre 10 y 200
nanosegundos
• Si no hay fallos: tiempo acceso efectivo es el mismo
que el tiempo de acceso a memoria
• Si ocurre un fallo hay que leer del disco la página y
luego acceder a la palabra deseada
• Entonces:
– si p es la probabilidad de que ocurra un fallo,
– cabe esperar que esta probabilidad es cercana a 0
– el tiempo efectivo de acceso (tea) es:
tea  (1  p)  am  p  ( tiempo falló de página)
• Para calcular lo anterior necesitamos saber cuánto
tiempo toma resolver un fallo de página
Diapo. No. 17
Sistemas Operativos
La memoria virtual
Secuencia fallo de página
1. Notificación al sistema operativo
2. Guardar los registros del usuario y estado del proceso
3. Determinar que la interrupción fue un fallo de página
4. Verificar que la referencia a la página fue válida y
determinar la posición de la página en disco
5. Leer del disco a un marco libre
a. Esperar en la fila de espera de este dispositivo, hasta
que se atienda la solicitud de lectura
b. Esperar durante el tiempo de búsqueda y/o latencia del
dispositivo
c. Iniciar la transferencia de la página a un marco libre
6. Durante la espera asignar la CPU a algún otro usuario
7. Interrupción del disco (E/S terminada)
8. Guardar los registros y el estado de proceso del otro
usuario (si se llevó a cabo el paso 6)
9. Determinar que la interrupción vino del disco
10. Corregir la tabla de páginas y las demás tablas de modo
que indiquen que la página ya esta en memoria
11. Esperar que la CPU se asigne otra vez a este proceso
12. Restaurar los registros de usuario, el estado de proceso
y la nueva tabla de páginas y reanudar la ejecución
interrumpida
Diapo. No. 18
Sistemas Operativos
La memoria virtual
Tiempo servicio fallo página
• Tiene tres componentes
– Atender la interrupción de fallo de página
– Traer la página a la memoria
– Reiniciar los procesos
• Primera y última tarea podrían tomar entre 1 y 100
microsegundos cada una
• Tiempo intercambio:
–
–
–
–
promedio latencia disco duro:
tiempo de búsqueda:
tiempo de transferencia:
total:
15 microsgs
8 milisgs
1 milisg
24 milisgs
• Tiempo total paginación: aprox. 25 milisgs
• Solo se considera tiempo de servicio
– si hay una cola de procesos hay que considerar el
tiempo de espera para que el dispositivo este libre
• Si tiempo acceso memoria es de 100 nanosegs, el
tiempo de acceso efectivo es:
tae =
(1-p) x (100) + p ( 25 milisegs)
(1-p) x 100 + p x 25,000,000
100 + 24, 999,900 x p
Diapo. No. 19
Sistemas Operativos
La memoria virtual
Entonces ???
• Tiempo de acceso efectivo es directamente
proporcional a la frecuencia de los fallos de página
• Si un acceso de cada 1000 causa un fallo de página,
el tiempo de acceso efectivo será de 25 microsegs
¡¡¡ Desempeño se reduce en un factor de 250 a
causa de la paginación por demanda !!!
• Si se desea una degradación de menos del 10%, se
necesita que:
110 > 100 + 25,000,000 x p
10 > 25,000,000 x p
p > 0.0000004
Para mantener en un nivel razonable la
reducción del desempeño sólo se puede
permitir fallos de página en menos de uno
de cada 2,500,000 accesos a memoria
• Es importante mantener baja la frecuencia de fallos
de página, de lo contrario el tiempo de acceso
aumentará y frenará la ejecución de procesos,
• Ejemplos: disco fragmentado y poca RAM en
Windows 95 vs área de swap en Linux
Diapo. No. 20
Sistemas Operativos
La memoria virtual
El reemplazo de páginas
• Adoptan el enfoque: si no hay marcos libres, se busca
uno ocupado pero que no se este usando y lo liberamos
• Un marco se libera escribiendo su contenido en el
espacio de intercambio y modificando la tabla de
páginas (y todas las demás) de tal forma que indiquen
que la página ya no esta en la memoria
• La rutina de atención de fallos de página se modifica
de la siguiente forma:
1. Encontrar la página deseada en el disco
2. Hallar un marco libre
a. Si hay un marco libre usarlo
b. Si no, usar un algoritmo de reemplazo de páginas
para escoger un marco víctima
c. Escribir la página víctima en el disco; modificar de
manera acorde las tablas de páginas y de marcos
3. Leer la página deseada y colocarla en el marco recién
liberado; modificar las tablas de páginas y de marcos
4. Reiniciar el proceso usuario interrumpido
• Si no hay marcos libres, se requieren dos transferencias
de página (hacia afuera y hacia adentro), lo que duplica
el tiempo de servicio
– solución: usar un bit de modificación o bit sucio
Diapo. No. 21
Sistemas Operativos
La memoria virtual
Estructura tabla de páginas
Caching
desactivado
Modificado
Presente/
ausente
Número de marco de página
Referenciado
Protección
caching:
referenciado:
páginas asociadas a registros de dispositivos
1 cuando se hace una referencia a una página
para leer o escribir
modificado:
recuperación marco, si página no ha sido
modificada no se escribe a disco
protección:
tipo acceso permitido, (0 lec/esc, 1 solo lectura)
presente/ausente: 1: entrada valida y puede ser utilizada
0: página no cargada en memoria
Diapo. No. 22
Sistemas Operativos
La memoria virtual
Algoritmos de reemplazo de páginas y
algoritmos de asignación de marco
• Dos aspectos a cuidar en la implementación de la
paginación por demanda:
– desarrollar un algoritmo de asignación de marco
– desarrollar un algoritmo de reemplazo de páginas
• En el primero, si se tienen varios procesos en
memoria, hay que decidir cuántos marcos se
asignarán a cada uno
• En el último, si hay que reemplazar páginas hay
que seleccionar cuales se reemplazarán
Diapo. No. 23
Sistemas Operativos
La memoria virtual
Algoritmos de reemplazo de páginas
• ¿Cómo escoger un algoritmo de reemplazo
específico?
– En general lo que se busca es el algoritmo con
la frecuencia de fallos de página más baja
• Evaluación:
– Se ejecuta con una serie específica de
referencias a memoria y se calcula el número
de fallos de página
– serie específica: serie de referencias
– serie se puede generar en forma aleatoria o a
partir del rastreo de un sistema dado
– también se necesita saber el número de marcos
que se dispone
– a medida que aumenta el número de marcos, el
número de fallos disminuye,
– la adición de memoria física incrementa el
número de marcos
Diapo. No. 24
Sistemas Operativos
La memoria virtual
Algoritmo Optimo
• Cuando ocurre fallo página cierto conjunto de páginas se
encuentran en memoria
• En la siguiente instrucción se hará referencia a una de estas
páginas (la página que contenga la dirección de uno de
los operandos de la instrucción)
• Otras páginas no se usarán hasta 20, 200 o 1500
instrucciones más adelante
• Cada página se va a etiquetar con:
- Número de instrucciones a ejecutar antes de hacer
la primera referencia a dicha página
• Principio algoritmo:
- Eliminar página con la máxima etiqueta
- Si una instrucción no va a ejecutarse durante 8
millones de instrucciones y otra página se usará hasta
dentro de 6 millones: eliminar primera retrasa el fallo
de página lo más posible
- Eliminar la página que más se va a tardar en ser
referenciada
Página 1
Página 2
Etiqueta: 10
Etiqueta: 30
Página 3
Etiqueta: 5
Diapo. No. 25
Sistemas Operativos
La memoria virtual
Algoritmo según el uso no tan reciente (NRU)
Computadoras tiene dos bits de estado asociados a cada página:
R: se activa si se hace referencia a la página
M: se activa cuando se escribe en la página
Bits actualizados en cada referencia a memoria.
Si tales bits no existen en hardware se pueden simular en software.
Principio Algoritmo:
- Al iniciar un proceso el S.O. asigna 0 a R y M de todas
las páginas
- En forma periódica se limpia el bit R, (para distinguir
páginas que no tengan referencia de las que sí).
- Fallo de página: S.O. inspecciona todas las páginas y
las divide en cuatro categorías, (según valores R y M ):
* caso 0: no referenciada, no modificada
* caso 1: no referenciada, pero ha sido modificada
* caso 2: se ha hecho referencia, pero no modificada
* caso 3: se ha hecho referencia y ha sido modificada
Diapo. No. 26
Sistemas Operativos
La memoria virtual
Algoritmo NRU (cont)
Algoritmo NRU elimina página de la primera clase no
vacía con el número más pequeño, (número de
clase).
Si todas tienen el mismo nivel se elimina el que llego
primero
Hipótesis implícita:
Es mejor eliminar una página modificada sin
referencia en al menos un intervalo de reloj, que
una página en blanco de uso frecuente.
Ventajas
+Fácil de comprender
+Implantación eficiente
+Rendimiento que, aún sin ser el óptimo, sí es
adecuado con mucha frecuencia.
Diapo. No. 27
Sistemas Operativos
La memoria virtual
Algoritmo FIFO
Principio los primeros en entrar, son los primeros en salir.
S.O. tiene una lista de todas las páginas en memoria, siendo la
primera página la más antigua y la última la más reciente.
En un fallo de página se elimina la primera página y se añade la
nueva al final de la lista.
FIFO es muy pocas veces usada en su forma más pura.
0
3
7
8
12
15
18
A
B
C
D
E
F
H
página que se
cargó en 1er. lugar
(1a. página en salir)
página de carga
más reciente
(última página en salir)
Diapo. No. 28
Sistemas Operativos
La memoria virtual
Algoritmo de la Segunda Oportunidad
Modificación simple de FIFO
evita deshacerse de una página de uso frecuente
inspeccionando el bit R de la página más antigua.
si (R = 0) =>
página antigua y no utilizada
se reemplaza en forma inmediata
si (R=1)
el bit se limpia
la página se coloca al final de la lista
su tiempo de carga se actualiza
=>
0
3
7
8
12
15
18
A
B
C
D
E
F
G
página que se
cargó en 1er. lugar
página de carga
más reciente
3
7
8
12
15
18
20
B
C
D
E
F
G
A
Una variante del algoritmo es usar dos bits M y R para decidir
si se da una segunda oportunidad
Diapo. No. 29
Sistemas Operativos
La memoria virtual
Algoritmo de Reemplazo de Reloj
Mantener páginas en una lista circular con forma de reloj.
Una manecilla apunta hacia la página más antigua.
A
L
B
K
C
J
D
I
E
H
F
G
Al ocurrir un fallo de página se inspecciona la página a la que
apunta la manecilla.
Si bit R = 0
=> página se retira de memoria
se inserta nueva página en su lugar en el reloj
manecilla avanza una posición
si no se busca una página con R = 0.
Difiere del anterior sólo por la implementación
Diapo. No. 30
Sistemas Operativos
La memoria virtual
Algoritmo de la menor uso reciente (LRU)
Páginas uso frecuente en las últimas instrucciones se utilizan con
cierta probabilidad en las siguientes.
Es probable que las páginas que no hayan sido utilizadas durante
mucho tiempo permanezcan sin uso por bastante tiempo.
Esto induce al siguiente algoritmo:
al ocurrir un fallo de página se elimina la página que
no haya sido utilizada durante el tiempo más grande.
Nombre estrategia: LRU
LRU: realizable en teoría, no es barato.
Implementación: necesario mantener una lista de todas las
páginas en memoria, en donde la página de uso más reciente este
al pri ncipio de la lista y la de uso menos reciente al final.
Dificultad:
la lista debe actualizarse en cada referencia a
la memoria.
Búsqueda de la página en la lista, su eliminación y posterior
traslado al frente de la misma NO puede ser una operación muy
lenta.
Diapo. No. 31
Sistemas Operativos
La memoria virtual
1a. Solución: caso más sencillo
Requiere de un contador de 64 bits, C, en hardware.
se incrementa en forma automática después de
cada instrucción.
Cada entrada en tabla de páginas debe contener espacio
necesario para almacenar el contador.
Después de cada referencia el valor actual de C se
almacena en la entrada de la tabla de páginas
correspondiente a la página a la que se hizo referencia.
Fallo de página:
=> S.O. examina todos los contadores de la tabla
de páginas y elige el mínimo, (i.e. página de
uso más reciente).
Diapo. No. 32
Sistemas Operativos
La memoria virtual
Ejemplo solución
Valor inicial cont = 0;
Referencias: P0, P1, P3, P1
cont = 1;
P0
P1
P2
P3
1
0
0
0
P0
P1
P2
P3
1
2
0
0
P0
P1
P2
P3
1
2
0
3
P0
P1
P2
P3
1
6
0
3
cont = 2;
cont = 3;
cont = 4;
(4+2)
Página más recientemente usada: P1, (cont = 6)
Página menos usada: P2 , (cont = 0)
Diapo. No. 33
Sistemas Operativos
La memoria virtual
2a. Solución: caso más sencillo
Máquina con n marcos para página,
hardware LRU puede matriz de n x n,
matriz inicializada en cero.
Referencia al marco k
hardware primero activa todos los bits del renglón k
desactiva después todos los bits de la columna k.
En cualquier instante:
renglón con valor binario mínimo es de uso menos frecuente,
renglón con el siguiente valor más pequeño es el segundo
de uso menos reciente, etc.
Diapo. No. 34
Sistemas Operativos
La memoria virtual
Ejemplo de LRU con uso de una matriz
Máquina con cuatro marcos, con referencias a las páginas en el orden :
0, 1, 2, 3, 2, 1, 0, 3, 2, 3
Después hacer referencia a la página 0 tenemos la situación siguiente:
0
1
2
3
0
0
0
0
0
1
1
0
0
0
2
1
0
0
0
3
1
0
0
0
0
1
2
3
0
0
1
0
0
(a)
0
1
2
3
0
0
1
1
1
1
0
0
1
1
1
0
0
0
0
0
1
2
3
1
1
0
1
1
3
1
1
0
0
0
1
2
3
0
0
1
1
0
1
0
0
1
0
(b)
2
0
0
0
0
3
0
0
1
0
0
1
2
3
0
0
1
1
1
1
0
0
0
0
(d)
0
0
0
1
1
2
1
1
0
0
2
0
0
0
0
(i)
2
0
1
0
0
0
1
2
3
0
0
0
1
1
1
1
0
1
1
2
0
0
0
1
3
1
1
1
0
0
1
2
3
0
0
1
1
1
1
0
0
1
1
(d)
3
0
1
1
0
(f)
3
0
0
1
0
2
0
0
0
0
0
1
2
3
0
0
0
0
0
1
1
0
0
0
2
1
1
0
0
(g)
2
0
0
0
1
3
0
0
0
0
(d)
3
1
1
1
0
0
1
2
3
0
0
0
0
1
1
1
0
0
1
2
1
1
0
1
3
0
0
0
0
(h)
3
0
0
0
0
(j)
Diapo. No. 35
Sistemas Operativos
La memoria virtual
Simulación LRU en software
LRU utiliza hardware especial.
Si no existe tal hardware >>> solución implantar en software
Posibilidad usar algoritmo de uso no frecuente o NFU
necesita un contador en software asociado a c/página
valor inicial = 0;
En cada interrupción de reloj, el S.O. examina todas las páginas
de la memoria:
el bit R (0 o 1) se suma al contador
(contadores son un intento por llevar un registro
de la frecuencia de referencia de la página ).
Principal problema NFU: nunca olvida.
Diapo. No. 36
Sistemas Operativos
La memoria virtual
Implementación LRU con pila
• Mantener una pila de números de página
• Cuando se hace referencia a una página se saca de la
pila y se coloca arriba
• De este modo, en el tope de la pila siempre esta la
página más recientemente utilizada
• Ya que es necesario sacar entradas de en medio de la
pila, la mejor forma de implementar la pila es con una
lista doblemente encadenada y con apuntadores al
principio y al final
• Cada actualización es costosa, pero no hay que buscar
la página a reemplazar, uno de los apuntadores señala
la página LRU
• Implementación en software o microcódigo
• Ejemplo: serie referencias: 4 7 0 7 1 0 1 0 1 2 1 2 7 1 2
2
1
0
7
4
7
2
0
7
4
pila antes de a
pila después de b
a b
Diapo. No. 37
Sistemas Operativos
La memoria virtual
Algoritmos de conteo
• Se podría mantener un contador del número de
referencias que se han hecho a cada página
• Se tienen dos esquemas: LFU y MFU
• Algoritmo LFU
– Eliminar páginas menos frecuentemente usadas (no
confundir LFU con LRU)
– exige reemplazar la página con la cuenta más baja
– una página que se ha usado activamente debe tener
una cuenta de referencias grande
– algoritmo castiga a páginas que se usaron mucho
durante la fase inicial y luego no se vuelven a usar
• Algoritmo MFU
– eliminar páginas más frecuentemente usadas
– se basa en el argumento de que la página con la
cuenta más baja probablemente se acaba de traer a la
memoria y todavía no se usa
• Ni el algoritmo MFU ni el LFU son comunes
• La implementación de estos algoritmos es
relativamente costosa
Diapo. No. 38
Sistemas Operativos
La memoria virtual
Algoritmo colocación páginas en buffers
• Muchos sistemas mantienen una reserva de marcos
libres
• Cuando ocurre un fallo de página, se escoge un
marco víctima igual que antes
– sin embargo la página deseada se coloca en un marco
libre de la reserva antes de escribir la víctima en el
disco
– este procedimiento permite al proceso reiniciarse lo
más pronto posible, sin esperar a que la página víctima
se escriba en el disco
– cuando la víctima termina de escribirse en el disco, su
marco se añade a la reserva de marcos libres
• Una variante es mantener una lista de páginas
modificadas
– siempre que dispositivo de paginación este ocioso, se
escoge una página modificada y se escribe en el disco
– después de lo cual se apaga su bit de modificación
– esquema aumenta probabilidad de que una página este
limpia cuando se le escoja para ser reemplazada, y no
tenga que reescribirse
Diapo. No. 39
Sistemas Operativos
La memoria virtual
• Otra variantes es mantener una reserva de marcos
libres, pero recordar cuál página estaba en cada
marco
– el contenido de un marco no se modifica cuando la
página que contiene se escribe en el disco
– entonces es posible reutilizar la página vieja
directamente de la reserva de marcos libres si llega a
necesitarse antes de que vuelva a usarse ese marco
– en tal caso, no habrá que efectuar E/S
– cuando ocurre un fallo de página, primero se
determina si la página deseada está en la reserva de
marcos libres
– so no es así, se escoge un marco libre y se coloca en él
la nueva página
Diapo. No. 40
Sistemas Operativos
La memoria virtual
Algoritmo de maduración
Bits R para las
páginas 0-5,
en la marca de
reloj
Bits R para las
páginas 0-5,
en la marca de
reloj
Bits R para las
páginas 0-5,
en la marca de
reloj
Bits R para las
páginas 0-5,
en la marca de
reloj
Bits R para las
páginas 0-5, en
la marca de
reloj
101011
110010
110101
100010
011000
Página
10000000
11000000
11100000
11110000
01111000
00000000
10000000
11000000
01100000
10110000
10000000
01000000
00100000
00010000
10001000
00000000
00000000
10000000
01000000
00100000
10000000
11000000
01100000
10110000
01011000
10000000
01000000
10100000
01010000
00101000
(c)
(d)
(e)
(a)
(b)
Diapo. No. 41
Sistemas Operativos
La memoria virtual
Asignación de marcos
• Como repartir la cantidad fija de memoria libre
entre los distintos procesos
• Si se tienen 93 marcos libres y dos procesos
¿cuantos marcos recibe cada proceso?
• Caso más sencillo: monousuario
– memoria 128K y páginas de 1K
– sistema operativo ocupa 35K => 93 marcos
libres
– 93 marcos se colocan en lista de marcos libres
– proceso inicia y va a recibir los 93 marcos,
cuando requiera un 94, se aplica un algoritmo
de reemplazo
– al final proceso regresa los 93 marcos
– otras opciones: si sistema operativo no usa su
espacio de buffers y tablas estos podrían apoyar
la paginación de usuarios
– resumiendo estrategia: se asigna cualquier
marco libre al proceso del usuario
Diapo. No. 42
Sistemas Operativos
La memoria virtual
Número mínimo de marcos
• No es posible asignar más del total de marcos
disponibles (a menos que se compartan las páginas)
• Existe un número mínimo de marcos que se pueden
asignar
– número definido por la arquitectura del conjunto de
instrucciones
– contener páginas a las que una sola instrucción
pueda hacer referencia (evitar reiniciar instrucción)
– situación grave: arquitecturas que permiten múltiples
niveles de indirección
– instrucción carga sencilla puede hacer referencia a
una dirección indirecta (en otra página) que también
puede hacer referencia a una dirección indirecta (en
otra página)
– solución indirecciones: limitar los niveles de
indirección, a través de un contador,
• Número mínimo de marcos por proceso esta
definido por la arquitectura, mientras que el
número máximo esta definido por la cantidad de
memoria física disponible
• Menos marcos => más fallos de página
Diapo. No. 43
Sistemas Operativos
La memoria virtual
Algoritmos de asignación
• Asignación equitativa:
– La forma más fácil de dividir m marcos entre n
procesos es dar a cada proceso una porción de m/n
marcos
– Por ejemplo 93 marcos y cinco procesos: cada
proceso recibirá 18 marcos, los tres marcos restantes
pueden usarse como reserva
• Asignación proporcional
– diferentes procesos requieren diferentes cantidades
de memoria
– si un proceso (p1) requiere 10K y otro (p2) 127K y
hay 62 marcos no es lógico asignar 31 marcos a cada
uno
– se asigna memoria disponible a cada proceso según
su tamaño, entonces:
si : t amañomemoriavirt ualpara proceso pi
S   si
m : t ot alde marcosdisponibles
ai : númeromarcosasignados al procesoai
ai  si/S  m
Diapo. No. 44
Sistemas Operativos
La memoria virtual
• Se debe ajustar ai de modo que sea un entero mayor que
el número mínimo de marcos requeridos por el conjunto
de instrucciones y que la sumatoria no exceda m
• En el ejemplo anterior:
10/137 x 62 = 4 (p1 tendrá 4 marcos)
127/137 x 62 = 57 (p2 tendrá 10 marcos)
• Los procesos comparen recursos de acuerdo a su
necesidad
• Tanto en asignación equitativa como en proporcional la
asignación a cada proceso puede variar según el nivel
de multiprogramación
– si el nivel se incrementa cada procesos perderá
algunos marcos para proporcionar al nuevo proceso
– si el nivel disminuye los marcos que se habían
asignado al proceso que salió se pueden repartir
• Tanto en asignación equitativa como proporcional un
proceso de alta prioridad se trata igual que uno de baja
prioridad
• Para dar prioridad es posible emplear esquema
asignación proporcional en el que la asignación de
marcos no dependa de tamaños relativos de los procesos
si no de su nivel de prioridad
Diapo. No. 45
Sistemas Operativos
La memoria virtual
Asignación global o local
• Otro factor importante de como se asignan los marcos
es el reemplazo de páginas
• Si hay varios procesos compitiendo por los marcos, es
posible clasificar algoritmos de reemplazo en
reemplazo global y reemplazo local
• Reemplazo global
– permite a un proceso seleccionar un marco de reemplazo
del conjunto de todos los marcos,
– incluso si ese marco esta asignado a otro proceso, un
proceso puede arrebatarle un marco a otro
– por ejemplo, procesos con más prioridad
– problema: un proceso no puede controlar su propia
frecuencia de fallos de página (proceso sólo selecciona
marcos asignados a otros procesos)
• Reemplazo local
– el número de marcos asignado a un proceso no cambia
– el conjunto de páginas de un proceso que están en la
memoria sólo depende del comportamiento de paginación
de ese proceso
– podría obstaculizar ejecución de un proceso por no dejar
que aproveche otras páginas de memoria de poco uso
• Reemplazo global generalmente aumenta el
rendimiento de un sistema, y es el más usado
Diapo. No. 46
Sistemas Operativos
La memoria virtual
La segmentación
- Paginación = espacio direcciones unidimensional, (0..max)
- Dotar máquina de varios espacios independientes de
direcciones, desde 0 hasta cierto máximo.
- Los distintos segmentos pueden tener longitudes distintas.
- La longitud de cada segmento puede ser distinta
- La longitud de un segmento puede variar durante su ejecución
- Acceso se hace en dos partes: número de segmento y una
dirección dentro de este
- Un segmento puede tener la protección adecuada para el
tipo de objeto almacenado
Diapo. No. 47
Sistemas Operativos
La memoria virtual
Espacio de direcciones virtuales
Tabla de
símbolos
La tabla de símbolos se
ha encimado en la tabla
del texto fuente
Texto fuente
Espacio de direcciones utilizado en este
momento por la tabla de constantes
Tabla de constantes
Libre
Espacio de direcciones
asignado a la tabla de
constantes
árbol léxico
Llamadas a la pila
En un espacio unidimensional de direcciones con tablas crecientes, una tabla puede encimarse
con otra.
Diapo. No. 48
Texto
fuente
Segmento
1
0
Constantes
Segmento
2
16 K
12 K
8K
4K
O
árbol
léxico
Segmento
3
8K
4K
O
12 K
Una memoria segmentada permite que cada tabla crezca o se reduzca en
forma independiente de las demás
20 K
16 K
12 K
8K
8K
12 K
4K
4K
Tabla de
símbolos
O
O
Segmento
0
Llamadas
a la pila
Segmento
4
Sistemas Operativos
La memoria virtual
Diapo. No. 49
Sistemas Operativos
La memoria virtual
La tabla de segmentos
Tabla de Segmentos
limite base
s
Memoria Principal
CPU
( s, d)
base+d
d < limite
si
no
trap, error direccionamiento
Diapo. No. 50
Sistemas Operativos
La memoria virtual
Ejemplo segmentación
Espacio direcciones virtuales
subrutina
1400
segmento 0
stack
segmento 3
sqrt()
2400
segmento 0
tabla de
simbolos
main() del
programa
principal
3200
segmento 1
segmento 3
segmento 4
segmento 2
4300
segmento 2
Tabla de Segmentos
0
1
2
3
4
limite
1000
400
400
1100
1000
4700
base
1400
6300
4300
3200
4700
segmento 4
5700
6300
segmento 1
Memoria Principal
6700
Diapo. No. 51
Sistemas Operativos
La memoria virtual
Compartiendo Segmentos
Memoria Virtual
Editor
segmento 0
datos 1
Tabla Segmentos P1
limite base
0 25286 43062
1 4425 68348
43062
segmento 1
editor
Espacio direcciones
virtuales de P1
68348
datos 1
72773
Editor
Tabla Segmentos P2
segmento 0
datos 2
segmento 1
limite base
0 25286 43062
1 8550 90003
90003
datos 2
98553
Espacio direcciones
virtuales de P2
Diapo. No. 52
Sistemas Operativos
La memoria virtual
Combinando paginación y segmentación
dirección virtual
d
s
d
d < (long. seg.)
STBR + s
no
longitud
segmento
(base tabla)
+
p
base
tabla-páginas
f
p
d’
trap
f
d’
Memoria
Principal
dirección física
Tabla de páginas
para segmento s
Diapo. No. 53
Sistemas Operativos
La memoria virtual
Esquema MULTICS
- Direcciones virtuales:
18 bits de número de segmento
16 bits de offset
- Necesarias igual número de entradas en tabla segmentos y segmentos
(no debe de haber entradas vacías)
- Segmentos: palabras de 64K
- Paginar los segmentos: cualquier marco vacío puede ser usado para
una determinada página
Descriptor del segmento:
18
9
1 1 1
3
3
Direcciones en memoria princi- Longitud del segpal de la tabla de paginación
mento (en páginas)
Tamaño página:
0: 1024 palabras
1: 64 palabras
bits diversos
0: segmento esta paginado
1: segmento no paginado
bits protección
Dirección virtual 34 bits:
Número de
segmento
18
Número de
página
6
Ajuste dentro
de la página
10
Diapo. No. 54
Sistemas Operativos
La memoria virtual
Interpretación de una dirección en MULTICS
Dirección lógica
s1
s2 d1
d2
s1
s2
tabla de páginas
de la tabla
de segmentos
d1
página
d2
de la tabla
de segmentos tabla de páginas
del segmentos
página
del segmento
Diapo. No. 55
Sistemas Operativos
La memoria virtual
Comparación paginación segmentación
Motorola 68000: paginación
Intel 8086: segmentación
Considerando
Paginación Segmentación
¿Necesita saber el programador si está
utilizando esta técnica?
NO
SI
¿Cuántos espacios lineales de direcciones
existen?
1
Muchos
¿Puede el espacio total de direcciones
exceder el tamaño de la memoria física?
SI
SI
NO
SI
¿Pueden adecuarse con facilidad las
tablas con tamaños fluctantes?
NO
SI
¿Se facilita el uso de procedimientos
compartidos entre los usuarios?
NO
SI
¿Pueden distinguirse los procedimientos
y los datos, además de protegerse en
forma independiente?
Diapo. No. 56
Núcleo de UNIX
4.3BSD
Memoria para páginas
0
Memoria para páginas
1
Memoria para páginas
2
Memoria para páginas
3
~
~
Memoria principal
~
~
Entradas del mapa
central, uno por
cada marco de página
~
~
Libre
En tránsito
Ajuste dentro del segmento
Texto / datos / pila
Indice en la tabla de procesos
Código del orden del bloque
Número del dispositivo en disco
Número de bloque en disco
Indice de la entrada superior
Indice de la siguiente entrada
Entrada del mapa central
Solicitando
memoria
Cerrado en un
~
~ bit de
Sistemas Operativos
La memoria virtual
Diapo. No. 57