Ejercicio 1
Un determinado sistema operativo gestiona la memoria virtual mediante paginación por
demanda. La dirección lógica tiene 24 bits, de los cuales 14 indican el número de página. La
memoria física tiene 5 marcos. El algoritmo de reemplazo de páginas es el LRU LOCAL, y se ha
implementado mediante un contador asociado a cada página que indica el instante de tiempo
en que se referenció la página por última vez. Las tablas de páginas en el instante 16 son:
Indique las direcciones físicas generadas para la siguiente secuencia de direcciones lógicas: (A,
2900) (B, 1200) (A, 1850) (A, 3072) (B, 527) (B, 2987) (A, 27) (A, 2000) (B, 4800) (B, 1500).
Solución
Para poder traducir las direcciones lógicas a físicas hay que conocer el marco donde se ha
ubicado la página correspondiente. En este caso el tamaño de página es de 1024 palabras, ya
que la dirección lógica es de 24 bits de los cuales 14 son para indicar la página ⇒ quedan 10
bits para el desplazamiento dentro de la página. Consultando la tabla de páginas podemos
componer el estado inicial de la memoria. Por comodidad al lado de cada marco se
representará el contado LRU. Por lo tanto en la memoria principal tendremos:
Ejercicio 2
Un sistema de memoria virtual con paginación por demanda, tiene un tamaño de página de
512 palabras, una memoria virtual de 16 páginas numeradas del 0 al 15 una memoria física de
4 marcos (frames) numerados de 0 a 3. El contenido actual de la memoria es:
a) Mostrar el contenido de la tabla de páginas . b) Suponiendo un algoritmo de
reemplazo de páginas con estrategia óptima, mostrar el contenido de la tabla de
páginas, tras generar cada una de las siguientes direcciones lógicas: 1112, 1645, 2049,
622, 2776 . c) Direcciones físicas equivalentes a las lógicas 1628, 851, 2700 y 2432. d)
¿Qué pasa cuando se referencia la dirección lógica 1330?. e) Si la página cargada en el
marco 3 es un procedimiento que otro proceso Q quiere compartir, ¿dónde debe
aparecer en la tabla de páginas de Q?
Solución
a) Mirando el contenido de la memoria principal y teniendo en cuenta que la tabla de
páginas para el proceso tendrá un descriptor por cada página obtenemos que:
b) En primer lugar será necesario conocer a que página pertenece cada una de las
direcciones lógicas, para ello realizaremos la operación: Página = dirección_lógica div
tamaño_página= dirección_lógica div 512 Desplazamiento = dirección_lógica mod
tamaño_página
A continuación representaremos la memoria tras estas referencias, aplicando el algoritmo
óptimo para reemplazo de páginas.
El * indica que hay fallo de página, por lo tanto hay que seleccionar una victima. Se elige como
victima aquella que se tarda más tiempo en volver a referenciar o que ya no se vuelve a
referenciar. Cuando se hace referencia a la página 2, se elige como victima la página 9, que ya
no se va a volver a referenciar. Cuando se referencia a la página 3 se elige como victima a la 2
que ya no se vuelve a referenciar. En este instante el contenido de la tabla de páginas será el
siguiente:
c) La traducción de direcciones se realiza consultando la tabla de páginas:
d) Si a continuación se referencia la dirección lógica 1330 tendremos un fallo de página, ya que
esta dirección lógica pertenece a la página 2, cuyo bit de validez en la tabla de páginas está a
invalido
e) Depende del tipo de direccionamiento que se este empleando en el código de la página a
compartir. Si se trata de direccionamiento relativo, esta procedimiento podría estar ubicado
en cualquier página del proceso Q, y por tanto el descriptor correspondiente debería contener
el marco 3. Si se trata de de direccionamiento absoluto, debería aparecer en la misma entrada
donde aparece para el proceso P, ya que en caso contrario el código presente en ella podría no
funcionar bien (Si hay una instrucción de salto que no es relativa al valor del contador de
programa, y la posición destino de ese salto se encuentra en la misma página, se está
obligando a que ese marco esté asociado siempre a la misma página para todos los procesos
que lo utilicen). Por tanto, ha de aparecer asociado a la página 1 del proceso Q.
Ejercicio 3
Sea un sistema de memoria virtual por paginación por demanda, en el que: • Una dirección
lógica consta de 12 bits, de los cuales 3 son para el número de página. • Una dirección física
contiene 11 bits. • Existen dos procesos (A y B), y toda la memoria física se reparte entre estos
dos procesos por igual. • Se utiliza un algoritmo de reemplazo local de páginas LRU. Dar, para
la siguiente secuencia de direcciones lógicas, el correspondiente mapa de memoria: (A, 1035)
(B, 312) (A, 530) (B, 780) (A, 600) (A, 2000) (B, 1400) (B, 927) (A, 1030) (A, 1720) Nota: el par
(a,x) indica (proceso, dir. lógica en decimal)
Solución
Dirección lógica de 12 bits = 3 bits número de pág. + 9 bits de desplazamiento. Tamaño de
página de 512 palabras. La dirección física es de 11 bits = 2 bits número de marco + 9 bits de
desplazamiento. Los marcos se reparten por igual ⇒ 2 marcos para el proceso A y 2 marcos
para el proceso B
Ejercicio 4
Un sistema de gestión de memoria por segmentación paginada posee las siguientes
características:
• Una dirección lógica se compone de 12 bits.
• Una dirección física se compone de 10 bits.
• El máximo número de segmentos en un programa es 4 (segmentos 0 a 3).
• Hay 4 marcos en memoria.
Se pide:
a) ¿Cuál es el máximo número posible de páginas en un segmento?
b) Rellena las tablas de segmentos para los procesos A y B:
d) Suponiendo el formato (proceso, segmento, desplazamiento dentro del segmento), se
genera la siguiente secuencia de referencias a memoria: (A, 1, 27) (B, 2, 48) (A, 0, 411)
(B, 2, 132) (B, 1, 400) (A, 1,428) (B, 0, 25) (B, 2, 177) (A, 1, 186) (B, 1, 280). La memoria
está inicialmente vacía, y la política de reemplazo es FIFO con ámbito local. Determine
a partir de la situación final cuál es la dirección física correspondiente a cada una de las
siguientes direcciones lógicas: (A, 0, 350) (B, 2, 112) (A, 1, 422) (B, 0, 277) (A, 1, 604).
NOTAS:
• si la dirección es errónea, escriba ERROR.
• si está en disco, escriba DISCO.
• suponga que la memoria se llena de menor a mayor número de marco.
Solución
a) La respuesta es 4 páginas. La dirección física está formada por 10 bits = 2 bits número
marco + 8 bits desplazamiento. La dirección lógica está formada por 12 bits = 2 para el
segmento + 2 bits para el número de página + 8 bits para el desplazamiento de página. Con dos
bits para el número de página, el número máximo de páginas de un segmento es 4.
b) El tamaño de página es de 256 palabras. Suponiendo una única tabla de páginas para cada
proceso, la tabla de segmentos quedará: