Documente Academic
Documente Profesional
Documente Cultură
: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
INTRODUCCION.
• Rutinas para manejar errores que rara vez ocurren, este código
se ejecuta muy pocas veces, o nunca.
Versión 2.0 1
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
2 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 3
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 5
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
6 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 7
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
2) Buscar A
3) Buscar B
4) Sumar A y B
5) Almacenar la suma en C
8 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 9
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
SOLUCION:
Si el programa tiene 64k y las páginas 4k habrá 64k / 4k = 16 páginas.
Si la memoria tiene 32k y los frames 4k habrá 32k / 4k = 8 frames.
Si queremos realizar la siguiente instrucción MOVER REGISTRO, 01 la
dirección virtual 01 se envía a la MMU la cual detecta que se encuentra en la
pagina 0 de nuestro programa. Veamos el gráfico correspondiente.
P ro ce so M e m o ria C e n tral
D ire c. D ire c.
L ógica F ram e P /A F ram e F ísic a
00-04 2 1 3 00-04
04-08 1 1 1 04-08
08-12 6 1 0 08-12
12-16 0 1 5 12-16
16-20 4 1 4 16-20
20-24 3 1 4 20-24
24-28 0 0 2 24-28
28-32 0 0 1 28-32
32-36 0 0
36-40 5 1
40-44 0 0
44-48 7 1
48-52 0 0
52-56 0 0
56-60 0 0
60-64 0 0
10 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
P ág in a O ffse t
D ir. V irtu al d e
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
e n trad a 8 1 9 6
2 1
1 1
6 1 110
0 1
4 1
3 1
0 0
0 0
0 0
5 1
0 0
7 1
0 0
0 0
0 0
0 0
D ir. V irtu al d e
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0
salid a 2 4 5 8 0
Versión 2.0 11
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Estructura y funcionamiento
Cada entrada a la TLB corresponde a una página del proceso
accedida, por lo tanto tendremos direcciones a 32 páginas de 4KB cada una
lo que nos da 128KB de memoria, lo que se supone que es suficiente para
contener el área de trabajo de un proceso, sin tener que modificar la TLB.
Las 32 entradas están organizadas en 4 grupos de 8 entradas cada
una que operan en paralelo. La gran velocidad que alcanza por el método de
acceso, que es por contenido. Estas memorias se llaman CAM (CONTENT
ACCESS MEMORY – Memoria de acceso por contenido). Cada entrada en
una CAM se compone de una etiqueta y un dato asociado.
Para encontrar un valor, este se compara con los campos de etiqueta
de todas las posiciones. En caso que el circuito detecte el dato, ÉXITO (HIT),
el dato asociado se coloca en la salida. La entrada es la dirección lineal y la
salida es la dirección física correspondiente.
Los bits 12, 13 y 14 de la dirección lineal se selecciona permiten
seleccionar uno de los cuatro grupos de la TLB.
Estas entradas constan de 20 bits definidas de la siguiente manera:
a. 13 bits de más peso de la dirección lineal
b. 1 bit de validez. Si contiene un 1 lógico la entrada es válida,
en caso contrario los valores que se encuentran en la
entrada no nos sirven.
c. 1 bit D (DIRTY – sucio) Indica que la página fue modificada
d. 1 bit U (USED – usada) Indica que es una página usada y
que puede ser accedida por el nivel 3. De otro modo es una
página accedida sólo por el supervisor.
e. 1 bit W (WRITABLE – escribible – modificable) Si el bit
tiene un 1 lógico indica que la página permite realizar
escrituras o modificaciones.
Bien, una vez seleccionadas las mismas se comparan con los bits 15 a
31 de la dirección lineal. Si alguno de los 4 comparadores grita “BINGO” la
CPU toma los 20 bits de más peso de la dirección física se carga en las
líneas 12 a 31 del bus de direcciones. Posteriormente agrega los 12 bits de
menor peso (desplazamiento) de la dirección lineal y los coloca en los bits 0 a
11 del mismo bus con lo que logramos la dirección física completa.
Ahora se nos presenta un problema. El 386 no chequea el cambio de
contexto por lo tanto hay que borrarla, previo guardarla en algún lado y cargar
las otras.
Otro problema es que INTEL delega toda la responsabilidad al que
confecciona el sistema operativo, ya que en los futuros procesadores el
método puede ser cambiado totalmente y sin previo aviso.
12 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
CPU M E M O R IA PR IN C IP AL
f ram e s
f ra
m
e
+
x
c ó d ig o
acc e so
p ag. p ag .
ló g ic a física
clav e v alo r
T ab la d e p ág in as
LA TABLA DE PÁGINAS
En ella se encuentran una serie de campos que tiene real importancia
y que son tomados por los diferentes algoritmos para poder llevar a cabo su
función.
Cada dirección en el sistema está asociado con la tabla de paginas y
el mapa del disco. Cada una de ellas describe un espacio entero de
direcciones.
Vamos a especificar cuales son las funciones de los campos que
presentamos. Aclaremos que hay otros campos pero que no son relevantes
para nosotros.
• FRAME: Indica la dirección en la cual esta almacenada la
página en la memoria principal.
• BIT de PRESENCIA/AUSENCIA: Es también llamado valid-
invalid. Indica si la página se encuentra en memoria. En caso de que no esté
se producirá un page fault.
• BIT de MODIFICACION: Indica si la página a sido modificada o
no. Tengamos en consideración de que la pagina puede contener variables
que pueden ser modificadas a lo largo del proceso. Si ello ocurriera y esa
página fue seleccionada como víctima entonces el primer paso será grabar
en el disco la página víctima y luego traer la solicitada por el proceso.
Versión 2.0 13
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
14 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 15
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
8) Salvar los registros y el estado del proceso para el otro usuario. (si
el paso seis se ejecutó)
No todos estos pasos pueden ser necesarios en todos los casos. Por
ejemplo estamos asumiendo que, en el paso 6, se le asigna otro proceso a la
CPU, mientras se produce la E/S. Este arreglo permite la multiprogramación
para mantener la utilización de la CPU, pero requiere tiempo adicional para
reanudar la rutina de servicio al page fault cuando la transferencia de E/S se
completa.
En cualquier caso, nos encontramos con los tres componentes
principales del tiempo de servicio al page fault.
2) Leer la página.
3) Recomenzar el proceso.
16 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
= 100 + 24999900 p
10 > 25000000 . p
p < 0.0000004
REEMPLAZO DE PÁGINAS
En la presentación anterior, la tasa de ocurrencia de fallos de página
no representa un problema serio, puesto que se falla cada página como
máximo una vez, cuando ésta se referencia por primera vez. Esta
representación no es tan exacta. Considere que si un proceso de 10 páginas
solo usa la mitad de ellas, la paginación por demanda realiza la E/S
Versión 2.0 17
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
necesaria para cargar las cinco páginas que nunca se usarán. De esta forma,
si tenemos 40 frames, ejecutaríamos ocho procesos, en lugar de los cuatro
que se ejecutarían si cada uno requiriese 10 frames (cinco de los cuales
nunca se usarán).
18 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Nótese que, si no hay frame libre, pueda ser que se requieran dos
transferencias de página (una hacia afuera y una hacia adentro). Esta
situación duplica el tiempo del servicio de fallo de página e incrementa el
tiempo efectivo de acceso.
Esto puede reducirse con el uso de un bit de modificación. Cada
página o frame puede tener un bit de modificación asociado con él en el
hardware. El bit de modificación se pone en 1 siempre y cuando se escriba
una palabra o byte dentro de la página asociada al bit, indicando que esta se
modificó. Cuando elegimos una página para reemplazar, examinamos su bit
de modificación. Si el bit está en 1, sabemos que se modificó la página desde
que se la leyó del disco. En este caso, debemos copiar esta página en el
disco. Sin embargo, si el bit de modificación no está en 1, no se modificó la
página desde que se la atribuyó a la memoria no es necesario copiarla al
disco porque es igual a la que está allí. También se aplica esta técnica para
las páginas de solo lectura (por ejemplo, páginas de código binario). Estas
páginas no se pueden modificar; de esta manera, deben descartarse cuando
así se desea. Este esquema puede reducir significativamente el tiempo para
atender un fallo de página, dado que disminuye el tiempo de E/S en la mitad
si no se modificó la página.
El reemplazo de páginas es fundamental para la paginación por
demanda. Completa la separación entre memoria lógica y memoria física.
Con este mecanismo, se provee de una gran memoria virtual a
programadores con una pequeña memoria física. Con la paginación que no
es por demanda, las direcciones del usuario se transforman en direcciones
físicas, lo que permite que los dos grupos de direcciones sean bastante
diferentes. Sin embargo, todas las páginas de un proceso deben residir en la
memoria física. Con la paginación por demanda, el tamaño del rango de
direcciones lógicas ya no depende de la memoria física. Si tenemos un
proceso de usuario de 20 páginas, podemos ejecutarlo en una cantidad
menor de frames usando simplemente paginación por demanda y un
algoritmo de reemplazo de páginas para buscar un frame libre cuando sea
necesario. Si se debe reemplazar la página que se modificó, su contenido se
copia al disco. Una posterior referencia a esa página puede causar un fallo de
página. En este momento, la página volverá a la memoria, quizás
reemplazando alguna otra página en el proceso.
Para implementar paginación por demanda debemos resolver dos
problemas fundamentales: debemos desarrollar un algoritmo de asignación
de frames y un algoritmo de reemplazo de páginas. Si tenemos múltiples
procesos en memoria, debemos decidir cuántos frames se asignan a cada
proceso. Además, cuando se requiere un reemplazo de página, debemos
elegir los frames a reemplazar. Diseñar algoritmos apropiados para resolver
estos problemas es una tarea importante, dado el alto costo de las E/S de
disco. Aún sutiles mejoras en los métodos de paginación por demanda
derivan en grandes beneficios en el rendimiento del sistema.
Versión 2.0 19
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1.
20 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Algoritmo FIFO
El algoritmo más simple de reemplazo de página es el FIFO (primero
entrado, primero salido). El algoritmo FIFO asocia a cada página la hora en
que se la introdujo en la memoria. Cuando se debe sacar una página, se
elige la más “vieja”. Nótese que no es sumamente necesario registrar la hora
en que la página se introdujo en la memoria. Podemos crear una cola FIFO
para mantener todas las páginas en memoria. Reemplazamos la página que
está en la cabecera de la cola. Cuando la página se lleva a la memoria, la
insertamos en el fondo de la cola.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 0 1 2 2 3 0 4 2 3 0 0 0 1 2 2 2 7 0 1
7 0 1 1 2 3 0 4 2 3 3 3 0 1 1 1 2 7 0
7 0 0 1 2 3 0 4 2 2 2 3 0 0 0 1 2 7
P P P P P P P P P P P P P P P
F F F F F F F F F F F F F F F
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7
0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0
1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1
PF PF PF PF PF PF PF PF PF PF PF PF PF PF PF
Versión 2.0 21
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
11 02 66 21 11 02 09 11 02 66 21 09 total
11 02 66 21 11 02 09 09 09 66 21 21
11 02 66 21 11 02 02 02 09 66 66
11 02 66 21 11 11 11 02 09 09
PF PF PF PF PF PF PF PF PF 9
11 02 66 21 11 02 09 11 02 66 21 09 total
11 02 66 21 21 21 09 11 02 66 21 09
11 02 66 66 66 21 09 11 02 66 21
11 02 02 02 66 21 09 11 02 66
11 11 11 02 66 21 09 11 02
PF PF PF PF PF PF PF PF PF PF 10
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 0 1 2 2 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 0 1 1 2 3 3 4 2 3 0 3 2 1 2 0 0 7 0
7 0 0 0 2 2 3 4 2 2 0 0 0 1 2 1 2 7
PF PF PF PF PF PF PF PF PF
22 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
7 0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1 7
PF PF PF PF PF PF PF PF PF PF PF PF
El algoritmo produce 12 fallos, las primeras 5 son las mismas que con
el reemplazo óptimo. Cuando ocurre la llamada a la página 4 , sin embargo,
el LRU ve que ,de los tres marcos en memoria ,la página 2 fue usada menos
recientemente. La más recientemente usada es la 0 y justo después la página
3. De esta manera el LRU reemplaza la página 2 sin saber que va a ser
usada después. Cuando falla por la página 2, el LRU reemplaza la página 3 ,
porque de las tres página en memoria {0 3 4} la 3 e la usada menos
recientemente.
Versión 2.0 23
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 25
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 27
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Algoritmos de Asignación
El camino más fácil para separar los m marcos entre los n procesos,
es para dejar a cada uno una porción forma igual, m/n marcos. Por ejemplo
Si hay 93 marcos y 09 procesos, cada proceso obtendrá 10 marcos. Los tres
marcos restantes pueden usarse como un contenedor de marcos libres. Este
esquema se denomina asignación equivalente o pareja. Una alternativa es
reconocer que varios procesos pueden necesitar cantidades diferentes de
memoria. Si un pequeño proceso de un estudiante de 10k y un base de datos
interactiva de 127k son los únicos procesos corriente en un sistema con 62
marcos libres, no tiene sentido asignar a cada proceso 31 marcos. El proceso
del estudiante no necesitara más de 10 marcos, así que los otros 21 son
desperdiciados. Para resolver este problema, podemos usar la asignación
proporcional. Asignaremos la memoria disponible a cada proceso de
acuerdo a su tamaño. Dejar que el tamaño de la memoria virtual para el
proceso Pi sea Si, y definir S= E Si.
Entonces, si el número total de marcos disponibles es m asignaremos
Ai marcos a proceso Pi, donde Ai es aproximadamente Ai= Si/S x m.
Podemos ajustar cada Ai para ser un entero, el cual es más grande
que el mínimo número de marcos requeridos por el set de instrucciones. con
una suma que no exceda m.
Para una asignación proporcional, debemos separar los 621 marcos
entre 2 procesos uno de 10 páginas y uno de 127 páginas, asignando cuatro
marcos y 097 marcos respectivamente así 10/137 * 62 = 4 y 127/137 * 62 =
097.
Versión 2.0 29
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
TRASHING
Si el la cantidad de marcos asignados a un proceso de baja prioridad
cae hasta ser menor que el número mínimo requerido por la arquitectura de
la computadora, debemos suspender la ejecución del mismo. Podríamos
quitar sus restantes páginas, liberando así todos sus marcos asignados. Esta
30 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
CAUSAS DE TRASHING
El Trashing trae como consecuencia muchos problemas graves de
performance. Vamos a considerar el siguiente caso, basado en la conducta
real de los primeros sistemas de paginación.
El sistema operativo monitorea la utilización de la CPU. Si ésta es
demasiado baja, incrementaremos el grado de multiprogramación
introduciendo un nuevo proceso al sistema. Se utiliza un algoritmo de
reemplazo de página global, que reemplaza páginas sin dar importancia al
proceso al cual pertenecen. Supongamos ahora que un proceso entra una
nueva fase en su ejecución y necesita más frames. Comienza fallando y
tomando páginas de otros procesos, los cuales necesitan esas páginas y por
lo tanto, también fallan tomando páginas de otros procesos. Estos procesos
necesitan el dispositivo de paginación (llamémosle paginador) para mutar sus
páginas (swap in- swap out). A medida que la cola para el paginador se
incrementa, la cola de listos decrece; decreciendo obviamente la utilización
de la CPU.
El planificador de la CPU ve este decrecimiento y aumenta el grado de
multiprogramación. El nuevo proceso intentará comenzar tomando páginas
de procesos corrientes, causando más fallos de página y una cola aún mayor
para el paginador. Como resultado la utilización de la CPU cae aún más. Se
ha producido un Trashing y el rendimiento del sistema cae bruscamente. El
grado de page-fault crece. Como resultado, crece también el tiempo efectivo
de acceso a memoria. No se realiza ningún trabajo, dado que todos los
procesos están perdiendo su tiempo paginando.
Para incrementar la utilización de la CPU y detener el trashing,
debemos decrementar el grado de multiprogramación.
Los efectos del trashing pueden ser limitados utilizando un algoritmo
de reemplazo local o de prioridades. Con éste, si un proceso entra en
trashing, no puede tomar frames de otro proceso y provocar que los
siguientes entren también en trashing. Las páginas son reemplazadas sin
darle importancia al proceso al que pertenecen. De cualquier modo, si los
procesos entran en trashing, estarán la mayoría del tiempo en la cola para el
paginado. El tiempo promedio de servicio para los fallos de página crecerá,
Versión 2.0 31
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
t1 t2
WS(t1)= {1,2,0,9,6,7} WS(t2)={3,4}
32 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
D=Σ WSSi
siendo D la demanda total de marcos.
Versión 2.0 33
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
34 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
OTRAS CONSIDERACIONES.
Existen varios aspectos a tener en cuenta para implementar un
sistema paginado, algoritmos de reemplazo y políticas de asignación de
memoria son los más importantes. Es bueno considerar otros aspectos
también importantes a saber:
Prepaginación.
Como ya hemos visto en la paginación por demanda, las páginas son
cargadas a memoria sólo cuando se hace una referencia a una dirección de
esta página. Cuando un proceso comienza es muy probable que ocurran
numerosos fallos de página que producirán varias interrupciones y accesos a
disco para traer las páginas solicitadas. Luego cuando el proceso avanza
este nivel de fallas de página se ira decrementando hasta hacerse muy
pequeño. Para resolver el primer problema, el del comienzo del proceso
existe una estrategia llamada prepaginación, que consiste en traer a memoria
principal otras páginas aunque no sean pedidas por una falla de página. Esta
estrategia se basa en que la mayoría de los dispositivos de memoria
secundaria tienen un tiempo de búsqueda importante. Si ubicamos en la
memoria secundaria en forma contigua las páginas que se referencian, es
más conveniente en cada acceso a esta memoria traer además de la página
solicitada algunas más que están contiguas a estas, de esta manera se
ganaría algún tiempo evitando las varias búsquedas que tendría la
paginación por demanda, y además se reduciría la frecuencia de las fallas de
página. Por otro lado, este proceso sería ineficiente si las páginas extras
cargadas en memoria principal no son referenciadas.
Esta política de prepaginación puede ser utilizada en el comienzo de
un proceso o cada vez que ocurra una falla de página, en el primer caso el
programador debe de alguna manera designar las páginas a cargar.
Tamaño de la página.
No existe un mejor tamaño de página, por el contrario, hay varios
factores que permiten utilizar distintos tamaños. Veremos en los casos
siguientes como los diversos factores hacen, en algunos casos más
convenientes las páginas de gran tamaño, y en otros la páginas de pequeño
tamaño.
Un factor es el tamaño de la tabla de páginas, ya que cada proceso
activo debe tener una copia de la tabla de páginas es beneficioso que esta
sea del menor tamaño posible, esto se consigue con páginas de gran
tamaño.
Por otro lado, la memoria se utiliza mejor con tamaños pequeños de
página. Seguramente, la ultima página de un proceso no estará ocupada en
su totalidad, por lo tanto habrá una porción de memoria no utilizada
generando fragmentación interna, como la página es la unidad de asignación
de memoria no se podrá utilizar este remanente de memoria para otro
proceso, entonces si el tamaño de la página es grande esta fragmentación
Versión 2.0 35
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Estructura de programa.
Para interpretar este aspecto supongamos el siguiente ejemplo,
tenemos: páginas de 128 palabras, un programa que inicializa a cero una
matriz de 128 x 128, cuyos elementos ocupan 1 palabra. Si almacenamos la
matriz por fila, cada fila ocupara una página, si el programa recorre la matriz
por filas e inicializa y si el sistema operativo aloja menos de 128 páginas para
el programa entero habrá con seguridad 128 x 128 = 16.384 fallos de
páginas. Si se cambia el programa inicializando la matriz por filas, es decir en
el sentido en que fue almacenada, se reduce el número de fallos de página a
128.
Con este ejemplo se puede ver que mucho tiene que ver la
programación en una buena performance de la memoria virtual. Eligiendo
cuidadosamente las estructuras de datos y su programación se pueden
reducir las fallas de páginas y aumentar la vecindad de páginas
referenciadas.
Interlock.
Supongamos que un proceso hace un pedido de I/O, entonces es
puesto en la cola del dispositivo de I/O. Mientras tanto, la CPU ejecuta otros
procesos, estos causan fallos de página, y usando un algoritmo global de
36 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Una solución para este problema es permitir que se puedan bloquear páginas, en cada marco
debe haber un bit que indique el estado de bloqueo. Si un marco esta bloqueado no puede
seleccionarse para ser reemplazado.
Versión 2.0 37
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
38 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 39
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
RESUMEN
PÁGINACIÓN POR DEMANDA :
40 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Versión 2.0 41
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Una página no es reemplazada hasta que las demás lo hayan sido o se les
haya dado una segunda oportunidad. Se implementa con una cola circular.
• Algoritmo de segunda oportunidad mejorado: Se considera tanto el bit
de referencia como el bit modificado, se forman los pares ordenados :
1. (00) ni recientemente usado ni modificado, la mejor para
reemplazar;
2. (01) no usado recientemente pero modificado, la página puede
necesitar escribirse;
3. (10) recientemente usada pero limpia, se la podría usar otra vez
rápido;
4. (11) usada recientemente y modificada, probablemente se la
usará otra vez.
Cuando se va a reemplazar la página se examina a qué clase
pertenece, se reemplaza la primera página que se encuentre en la clase no
vacía más baja.
Algoritmos contadores: Se puede levar un contador con el número
de referencias hechas a cada página:
• Algoritmo LFU: El algoritmo de la página usada menos
frecuentemente requiere que se reemplace aquella con el contador más
pequeño.
• Algoritmo MFU: El algoritmo de la página más frecuentemente
usada, se basa en el argumento de que la página con el contador más
pequeño fue probablemente traída recién y necesitará ser usada
nuevamente.
Algoritmo de página de buffer: Se conserva un conjunto de marcos
libres. Cuando ocurre un fallo de página se elige un marco víctima pero la
página se lee en uno de los marcos libres antes de que la víctima se
sobrescriba. Esto le permite al proceso recomenzar tan pronto como sea
posible, sin esperar que la página víctima se saque; cuando esto último
ocurre el marco se agrega al conjunto de marcos libres.
Una expansión es mantener una lista de las páginas modificadas,
cuando el dispositivo de página está inactivo se selecciona una página
modificada y se la escribe en disco, reseteando su bit modificado.
Otra modificación es mantener un conjunto de marcos libres, pero
recordando qué página estaba en cada uno. De esta manera la página vieja
puede ser rehusada directamente del conjunto de marcos libres si se la
necesitase antes de rescribir el marco.
ASIGNACIÓN DE MARCOS
La asignación de marcos de memoria a los procesos puede realizarse
de diferentes maneras dependiendo de si la maquina en cuestión realiza o no
multiprogramación. En el caso de tratarse de una microcomputadora personal
monoprogramada hay varias estrategias a llevar a cabo, pero todas ellas
apuntan a lo mismo; todos los marcos libres son asignados al proceso
usuario.
En el caso de multiprogramación aparecen nuevos problemas.
El número de marcos que se asignan a un proceso no debe ser tan
poco que lo obligue a realizar constantemente fallos y así no realice un
avance en su ejecución y tampoco tan grande que solo unos pocos procesos
puedan ejecutarse dentro de la computadora. Además hay un número
42 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
mínimo de marcos que se deben asignar a los procesos, que esta dada por la
arquitectura del set de instrucciones. Consecuentemente debemos tener
suficientes marcos para mantener todas las diferentes páginas a las que
cualquier instrucción pueda referenciar. Además el grado de indirección de
las instrucciones puede consumir muchos marcos por ello deberemos
restringir la cantidad de indirecciones de las instrucciones (esto es una
instrucción de carga en la página 16 puede referirse a una dirección de la
página 0 que es a su vez una referencia indirecta de la página 23).
Los algoritmos de asignación de marcos pueden ser diversos, así el
más simple seria el de separar el total m de marcos entre los n procesos,
dándole a cada uno una cantidad equivalente, llamado este de Asignación
equivalente, pero esto resulta poco practico si tenemos procesos con mayor
carga que otros por esto se utilizan los algoritmos de Asignación Proporcional
que pueden tener en cuenta o el tamaño de los programas, o su prioridad o
ambos.
Versión 2.0 43
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
a) Pila
b) Tabla de símbolos de Hashing (hashed symbol table)
c) Búsqueda secuencial
d) Búsqueda binaria
e) Código puro
f) Operaciones de Vectores
g) Indirección
Utilización de la CPU 20 %
Disco de Paginación 97.7 %
Otros dispositivos de E/S 9 %
44 Versión 2.0
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
…2,6,1,9,7,7,7,7,9,1,6,2,3,4,1,2,3,4,4,4,3,4,3,4,4,4,1,3,2,3,4,4,4,3,4,4,4,...
|---------t1--------- |---------------t2--------------------|----------t3------------|
1,2,3,4,2,1,09,6,2,1,2,3,7,6,3,2,1,2,3,6
a) LRU
b) FIFO
c) Reemplazo Optimo (Optimal Replacement)
Versión 2.0 45
SISTEMAS OPERATIVOS REF.: Memoria Virtual
MEMORIA VIRTUAL
AUTOR: Ing. NICANOR CASAS EDICIÓN: BUENOS AIRES, JULIO 2006
Bibliografía
Ang98 – Angulo José María y Funke Enrique M. – Microprocesadores
Avanzados 386 y 486 – Editorial Paraninfo – Cuarta Edición - 1998
Bre01 - Brey Barry B. – Los Microprocesadores Intel – Prentice Hall – Quinta
Edición - 2001
Dei90 – Deitel H. M. – Sistemas Operativos – Addison Wesley – Segunda
Edición - 1990
Gro53 – Groves Jim – Windows NT Answer Book - Microsoft Press – First
Edition - 1953
Mic98 – Microsoft Corporation – Windows Architecture Training – Microsoft
Press – First Edition - 1998
Mil92 – Milencovick Milan – Sistemas Operativos Conceptos y Diseños – Mc
Graw Hill -Segunda Edición
Mur00 – Murdocca, Miles J. y Heuring Vincent P. – Principios de Arquitectura
de Computadoras – Prentice Hall – Primera Edición – 2000
Sil98 – Silverschatz Abraham y Galván Peter Baer – Operating Systems
Concepts – Addison Wesley – Fifth Edition – 1998
Sil02 – Silverschatz Abraham, Galvin Peter Baer y Gagne Grez – Sistemas
Operativos – Limusa Wiley – Sexta Edición – 2002
Sta01 – Stallings Willams – Sistemas Operativos – Prentice Hall – Cuarta
Edición – 2001
Sta00 – Stallings Willams – Organización y Arquitectura de Computadores –
Prentice Hall – Quinta Edición – 2000
Sta98 – Stallings Willams – Operating Systems Internals and Design
Principles – Prentice Hall – Third Edition – 1998
Tan92 - Tanembaum Andrews – Organización de computadoras un enfoque
estructurado – Prentice Hall – Tercera Edición – 1992
Tan97 – Tanembaum Adrews y Woodhull Albert. S – Operating Systems
Design and Implementation – Prentice Hall – Second Edition - 1997
Tan03 - Tanenaum Andrews – Sistemas Operativos Modernos – Pearson
Educación – Segunda Edición – 2003
Tur98 – Turley James L. – Advanced 80386 Programming Techniques –
Osborne Mc Graw Hill – First Edition - 1998
CAR01 – Jesús Carretero Pérez, Fekix García Carballeira, Pedro de Miguel
Anasagasti Fernando Perez Costoya – Sistemas Operativos Una visión
aplicada – Mc Graw Hill – Primera Edición - 2001
46 Versión 2.0