SOLUCIONES A ALGUNAS CUESTIONES Y PROBLEMAS

Transcripción

SOLUCIONES A ALGUNAS CUESTIONES Y PROBLEMAS
SOLUCIONES A ALGUNAS CUESTIONES Y PROBLEMAS
1 CUESTIONES
1.1 Cuestión 3.1.4 (pág. 3)
Supóngase un sistema de memoria paginada por petición. La tabla de páginas se implementa en registros.
Cuesta 8 ms. servir un fallo de página en caso de que haya sitio para la página o si la página reemplazada
no ha sido modificada (dirty bit a 0). En caso de que la página a reemplazar tenga el dirty bit a 1, el
tiempo de servicio del fallo pasa a ser de 20 ms. El tiempo de acceso a memoria fı́sica es de 1 s.
Asumiendo que la página a reemplazar tiene el dirty bit a 1 el 70% de las ocasiones, la memoria
fı́sica se encuentra llena en el 50% de las ocasiones en que se necesita traer una página y queremos
que el tiempo de acceso efectivo no exceda de 2 s: ¿cuál es la mayor tasa de fallos de página (p)
aceptable?
SOLUCIÓN:
Para responder a esta cuestión hay que considerar la expresión dada para el TAE en los
sistemas donde se utiliza paginación por demanda. Era la siguiente:
TAE = (1 - p)*TAM + p*(1 + p )*TTP
Aunque para este ejemplo no se ha considerado que el tiempo de transferencia de una
página entre memoria y disco (TTP) sea uniforme (no cuesta lo mismo efectuar una lectura que una escritura) y, además, también se ha considerado el porcentaje de ocasiones
en las que no era necesario aplicar reemplazo (este dato faltaba en la versión de los ejercicios que se ha dejado en reprografı́a este año). Con ello, habrá que definir los siguientes
parámetros:
TAE: Tiempo de acceso efectivo. Deseamos que sea 2 s.
p: Probabilidad de que se dé fallo de página. Hay que averiguar su valor.
p : Probabilidad de que sea necesario un reemplazo. Es decir, probabilidad de que no
haya ningún marco libre en memoria cuando se haya dado el fallo de página. Se nos
dice que es igual a 0.5.
p
: Probabilidad de que la página vı́ctima tenga el bit de modificación a 1. Es igual
a 0.7.
TAM: Tiempo de acceso a memoria. Es igual a 1 s.
TFP : Tiempo de servicio de un fallo de página cuando no hay que escribir la página
vı́ctima en disco. En nuestro caso, 8 ms.
TFP : Tiempo de servicio de un fallo de página cuando deba escribirse la página
vı́ctima en disco. En nuestro caso, 20 ms.
1
Con todo ello, la expresión del TAE resulta:
TAE = (1 - p)*TAM + p*p *p *TFP + p*(1 - p *p )*TFP Es decir, el acceso a memoria nos va a costar:
1. Un tiempo TAM cuando no se haya dado fallo de página en el acceso.
2. Un tiempo TFP cuando se produzca fallo de página y haya que escribir la página
vı́ctima en disco. Eso sólo sucederá cuando esté llena la memoria (p ) y además esté
modificada la página vı́ctima (p ).
3. Un tiempo TFP cuando se produzca fallo de página y sólo haya que cargar la página
solicitada. Eso ocurre cuando se da el fallo y, o bien quedan marcos libres, o bien la
página vı́ctima no fue modificada. La probabilidad de que esto ocurra, si se ha dado
un fallo de página, es (1 - p *p ).
Para terminar, habrá que dar el resultado pedido. Es el siguiente (Se expresan las unidades
de tiempo en s):
!"#$!!!%&'!%#($!!)*+,-/.0!!12!$!1
3*4556!67
*556!67
55 6!6 89!!!:(56:.<;
Es decir, la probabilidad de que se dé un fallo de página ha de ser 0.000081974 o de un
0.0081974%.
1.2 Cuestión 4.5 (pág. 17)
Dada la siguiente secuencia de referencias a páginas (numeradas de 0 a 9) de un proceso:
... 0 1 0 0 2 3 0 3 0 0 6 (muestreo) 7 0 2 6 1 7 ...
usando el modelo del área activa (working-set) y considerando el anterior instante de muestreo, indicar
cuál de las siguientes afirmaciones es verdadera:
1. Si el área activa es = 0,3,6 > , el tamaño de la ventana es 3.
2. Si el tamaño de la ventana es 8, el área activa es = 0,2,3,6 > .
3. El área activa actual depende de la anterior área activa, y de las nuevas referencias a páginas hasta
el momento del muestreo.
4. Si el tamaño de la ventana coincide con el número de páginas del proceso, entonces puede mantener todas sus páginas en memoria fı́sica.
5. Ninguna de las anteriores.
2
SOLUCIÓN:
Veamos cada una de las afirmaciones por separado:
1. FALSA. El tamaño de la ventana ( ? ) se refiere al número de referencias que hemos
tenido en cuenta al realizar la muestra y no al número de páginas que forman el área
activa.
Por tanto, si ? hubiera sido 3, el área activa habrı́a estado formada por las páginas
= 0, 6 > (que han sido las únicas que aparecı́an en esas últimas tres referencias).
Por contra, para mantener a las páginas 0, 3 y 6 en el área activa se hubiese tenido
que considerar una ? mayor o igual a 4 y menor o igual a 6.
2. CIERTA. Si tomamos ? igual a 8, las referencias consideradas han sido 0 2 3 0 3 0 0
6. Es decir, las ocho últimas antes del instante de muestreo. En esa serie únicamente
aparecen las páginas 0, 2, 3 y 6, por lo que el área activa será = 0, 2, 3, 6 > .
3. FALSA. El área activa actual no depende para nada de la anterior área activa. Cuando se describió el modelo no se dijo en ningún momento que la anterior área activa
debiese ser considerada. Para calcular una nueva área activa sólo debemos fijarnos
en las últimas ? referencias antes del instante de muestreo.
4. FALSA. Por mucho que ? coincida con el número de páginas del espacio lógico del
proceso, no hay ninguna razón que garantice que éste pueda tener todas sus páginas
en memoria fı́sica.
Por ejemplo, si un proceso tiene 400 páginas en su espacio lógico y hacemos que ?
sea también igual a 400, no podemos saber qué páginas distintas hemos llegado a
encontrar en esas ? referencias. Eso depende de la localidad de referencia del proceso. Como máximo podrı́amos llegar a encontrar ese número, pero es casi imposible
hacerlo (Para ello, el proceso hubiese tenido que dar un solo acceso en cada una de
las páginas antes de volver a repetir cualquier número de página. Resulta imposible
diseñar un programa que efectúe ese patrón de accesos).
De todas formas, debe tenerse en cuenta que la secuencia de referencias que estudiamos para aplicar el modelo del área activa no es una serie de referencias donde se
han eliminado las repeticiones. Como puede verse en el ejemplo de esta misma cuestión, en la secuencia pueden aparecer repeticiones. Es muy raro que un programa no
acceda varias veces seguidas a una misma página de código. Tómese como ejemplo
la página de código que ahora mismo esté ejecutando el proceso. En ella aparecerán
las instrucciones del programa, y estas seguirán un orden secuencial (estando esas
instrucciones en la misma página) hasta que se encuentre una instrucción de salto.
5. FALSA. Como ya se ha dicho anteriormente, la afirmación correcta era la segunda.
1.3 Cuestión 4.6 (pág. 18)
En un sistema informático sin M.V., un proceso emite las direcciones 1027 y 2051, las cuales son transformadas por el mecanismo de gestión de memoria en las direcciones fı́sicas 2051 y 3. Este sistema
informático puede estar utilizando:
1. Únicamente paginación, segmentación o segmentación paginada.
2. Únicamente paginación o segmentación paginada.
3. Únicamente paginación.
3
4. Únicamente particiones múltiples fijas o variables.
5. Ninguna de las anteriores.
SOLUCIÓN:
Esta cuestión puede resolverse con lo visto en el tema 2. Para ello, basta con fijarse en el tipo
de la dirección lógica empleada y las correspondencias existentes entre las dos direcciones
lógicas y sus corresponidentes direcciones fı́sicas.
Con el tipo de dirección lógica, dado como un único número, sabemos que no se trata de
ningún sistema segmentado ni segmentado-paginado. Si se utilizara algún tipo de segmentación, la dirección lógica tendrı́a la forma de un par de valores, el primero correspondiente
a un segmento y el segundo asociado al desplazamiento dentro de ese segmento. Esto hace
que las dos primeras afirmaciones sean FALSAS.
Respecto a la traducción efectuada entre las direcciones lógicas y las fı́sicas, podemos observar que no se ha utilizado asignación contigua. Esto se deduce del hecho de que la
dirección lógica más baja corresponde a la dirección fı́sica mayor. Para que esto sea posible, las dos direcciones lógicas deben pertenecer a dos fragmentos distintos del espacio
lógico a los que se han asociado distintos fragmentos del espacio fı́sico. Esto hace que la
cuarta afirmación también sea FALSA, ya que las particiones múltiples (tanto fijas como
variables) utilizaban asignación contigua.
La respueta correcta es la tercera. En la paginación, las direcciones lógicas se especificaban con un único valor (como ha sido el caso) y además, ésta era una técnica de asignación
dispersa (por lo que los fragmentos antes mencionados serı́an páginas).
Como posible ejemplo, asúmase que el tamaño de página de ese sistema era igual a 1024
octetos. Con ello, la primera dirección lógica corresponderı́a al número de página 1 con
desplazamiento 3, mientras que la segunda dirección corresponderı́a al número de página 2
con el mismo desplazamiento. Asociando el marco 2 a la página 1 y el marco 0 a la página
2, se hubiese dado la traducción propuesta en el enunciado.
1.4 Cuestión 4.7 (pág. 18)
Sea un sistema de M.V. con segmentación paginada. Cada dirección lógica consta de 16 bits, siendo
posible diferenciar como máximo 16 segmentos por proceso. El tamaño de página es de 256 octetos,
mientras que el de la memoria fı́sica es de 1024 octetos. Supongamos 2 procesos en el sistema, con la
siguiente ocupación:
PROCESO
A
B
SEGMENTO
0
1
0
1
2
TAMAÑO
260
380
250
1010
403
Los marcos se asignan en orden creciente.
Las tablas de segmentos y páginas no consumen memoria fı́sica, que se encuentra inicialmente
vacı́a.
4
Supongamos que los procesos emiten la siguiente secuencia de direcciones:
(B, 0, 190)
(A, 1, 51)
(A, 1, 363)
(B, 2, 390)
(A, 0, 100)
(B, 1, 1000)
(B, 2, 33)
siendo el formato utilizado (proceso, segmento, desplazamiento).
Si se aplica un algoritmo de reemplazo local LRU, elı́jase la aseveración que se satisface al final de
la secuencia:
1. La fragmentación interna provocada por el proceso A es de 129 octetos.
2. La fragmentación externa es de 146 octetos.
3. Se han producido 6 fallos de página.
4. Una dirección lógica (B, 2, 180) harı́a referencia a la dirección fı́sica 948.
5. Ninguna de las anteriores.
SOLUCIÓN:
Habrá que ver el resultado de procesar esas direcciones lógicas. A partir de él, ya se podrá
contestar.
Empezaremos averiguando el formato de las direcciones lógicas y fı́sicas. Con ello sabremos el número de marcos existentes y cómo se organiza el espacio lógico. Para ello:
Sabemos que el tamaño de página es igual a 256 octetos. Como log (256) = 8, entonces se necesitan 8 bits para los campos de desplazamiento.
Como el tamaño de la memoria fı́sica es igual a 1024 octetos, tendremos
marcos en memoria fı́sica.
AD@ CDE B F;
Si puede haber 16 segmentos en el espacio lógico, se necesitan log (16) = 4 bits para
mantener el número de segmento.
Como tenemos 16 bits para toda la dirección lógica, el número de página necesitará
p = 16 - ( 4 + 8 ) = 4 bits.
Ahora hay que verificar la corrección de las direcciones lógicas emitidas y dividirlas en sus
números de página y desplazamientos:
1. (B, 0, 190). El segmento 0 del proceso B tiene una longitud igual a 250 octetos. El
valor 190 no supera ese lı́mite por lo que la dirección es correcta.
AHD@
núm. pág. = G DCDE$I = 0
desplaz. = 190 mod 256 = 190
2. (A, 1, 51). El segmento 1 del proceso A tiene una longitud igual a 380 octetos. El valor
51 no supera ese lı́mite por lo que la dirección es correcta.
C
núm. pág. = G DCDE I = 0
desplaz. = 51 mod 256 = 51
3. (A, 1, 363). El segmento 1 del proceso A tiene una longitud igual a 380 octetos. El
valor 360 no supera ese lı́mite por lo que la dirección es correcta.
E
núm. pág. = G1DJ CDEJ I = 1
desplaz. = 363 mod 256 = 107
5
4. (B, 2, 390). El segmento 2 del proceso B tiene una longitud igual a 403 octetos. El
valor 390 no supera ese lı́mite por lo que la dirección es correcta.
HD@
núm. pág. = G1DJ CDE I = 1
desplaz. = 390 mod 256 = 134
5. (A, 0, 100). El segmento 0 del proceso A tiene una longitud igual a 260 octetos. El
valor 100 no supera ese lı́mite por lo que la dirección es correcta.
A@D@
núm. pág. = G DCDE I = 0
desplaz. = 100 mod 256 = 100
6. (B, 1, 1000). El segmento 1 del proceso B tiene una longitud igual a 1010 octetos. El
valor 1000 no supera ese lı́mite por lo que la dirección es correcta.
A@D@D@
núm. pág. = G DCDE I = 3
desplaz. = 1000 mod 256 = 232
7. (B, 2, 33). El segmento 2 del proceso B tiene una longitud igual a 403 octetos. El valor
33 no supera ese lı́mite por lo que la dirección es correcta.
núm. pág. = G DJDCDJ E I = 0
desplaz. = 33 mod 256 = 33
Una vez hecho esto y recordando que tenemos cuatro marcos, vamos a ver cómo queda la
memoria tras emitirse esta serie de referencias (se ha marcado en negrita la página elegida
como vı́ctima al efectuar un reemplazo):
marco 0
marco 1
marco 2
marco 3
(B,0,0)
(B,0,0)
(A,1,0)
(B,0,0)
(A,1,0)
(A,1,1)
(B,0,0)
(A,1,0)
(A,1,1)
FP
FP
FP
(B,2,1)
(B,0,0)
(A,1,0)
(A,1,1)
(B,2,1)
FP
(A,0,0)
(B,0,0)
(A,0,0)
(A,1,1)
(B,2,1)
FP
(B,1,3)
(B,1,3)
(A,0,0)
(A,1,1)
(B,2,1)
FP
(B,2,0)
(B,1,3)
(A,0,0)
(A,1,1)
(B,2,0)
FP
Ahora ya se puede responder acerca de la veracidad o falsedad de cada una de las afirmaciones efectuadas:
1. La fragmentación interna provocada por el proceso A es de 129 octetos.
FALSA. En el segmento cero se están perdiendo 512 - 260 = 252 octetos (ya que ese
segmento tiene dos páginas y su longitud es igual a 260 octetos). Además, en el segmento 1 se pierden también 512 - 380 = 132 octetos. En total, la fragmentación interna
para el proceso A es de 252 + 132 = 384 octetos.
2. La fragmentación externa es de 146 octetos.
FALSA. En un sistema paginado o segmentado-paginado no hay fragmentación externa.
3. Se han producido 6 fallos de página.
FALSA. En la tabla anterior se aprecia que se ha producido un fallo de página en cada
uno de los accesos. En total, han sido 7.
4. Una dirección lógica (B, 2, 180) harı́a referencia a la dirección fı́sica 948.
CIERTA. Si ahora se accede al dirección mencionada, perteneciente a la página (B,2,0)
no se va a producir ningún fallo de página. Esa página está presente en el marco 3.
Por tanto, su dirección fı́sica asociada será:
dir. fı́s. = núm. marco * tam. marco + desplazamiento
dir. fı́s. = 3 * 256 + 180 = 768 + 180 = 948
6
5. Ninguna de las anteriores.
FALSA. Ya hemos visto que la afirmación cierta era la anterior.
2 PROBLEMAS
2.1 Problema 3.2.2 (pág. 6)
Un sistema de memoria virtual (paginación por petición), tiene un tamaño de página de 512 palabras,
una memoria virtual de 16 páginas numeradas del 0 al 15, y una memoria fı́sica de 4 marcos numerados
de 0 a 3. El contenido actual de la memoria es:
DIRECCIÓN
0
...
512
...
1024
...
1536
CONTENIDO
comienza página 4 de P
...
comienza página 9 de P
...
comienza página 5 de P
...
comienza página 1 de P
siendo P un proceso.
1. Mostrar el contenido de la tabla de páginas.
2. Idem tras generar cada una de las siguientes direcciones lógicas: 1112, 1645, 2049, 622, 2776
(suponiendo que el algoritmo de reemplazo de páginas utiliza estrategia óptima).
3. Direcciones fı́sicas equivalentes a las lógicas 1628, 851, 2700 y 2432.
4. ¿Qué pasa cuando se referencia a la dirección lógica 1330?.
5. Si la página cargada en la trama 3 es un procedimiento que otro proceso Q quiere compartir, ¿dónde
debe aparecer en la tabla de páginas de Q?
SOLUCIÓN:
1. El contenido inicial de la tabla de páginas será (Obsérvese que en la tabla anterior
nos estaban dando la página ubicada en cada uno de los cuatro marcos existentes):
0
1
2
3
4
5
6
7
Marco
–
3
–
–
0
2
–
–
Validez
0
1
0
0
1
1
0
0
7
8
9
10
11
12
13
14
15
Marco
–
1
–
–
–
–
–
–
Validez
0
1
0
0
0
0
0
0
2. Para resolver el segundo apartado hay que encontrar en primer lugar el número de
página asociado a cada uno de las direcciones lógicas presentes en la secuencia.
Son los siguientes 2 (1112 div 512), 3 (1645 div 512), 4 (2049 div 512), 1 (622 div
512) y 5 (2776 div 512).
Veamos cómo queda la memoria tras esta serie de referencias:
marco 0
marco 1
marco 2
marco 3
inic.
4
9
5
1
2
4
2
5
1
FP
3
4
3
5
1
FP
4
4
3
5
1
1
4
3
5
1
5
4
3
5
1
Como se utiliza el algoritmo óptimo, se elige como vı́ctima aquella página que tardará
más en volverse a utilizar, o aquella que ya no vuelva a necesitarse. En el primer
reemplazo se ha elegido la página 9 como vı́ctima porque ya no volvı́a a necesitarse,
mientras que la 4, la 5 y la 1, sı́. En el segundo reemplazo ocurre justamente lo mismo.
Llegado a este punto, la tabla de páginas queda como sigue:
0
1
2
3
4
5
6
7
Marco
–
3
–
1
0
2
–
–
Validez
0
1
0
1
1
1
0
0
8
9
10
11
12
13
14
15
Marco
–
–
–
–
–
–
–
–
Validez
0
0
0
0
0
0
0
0
3. Las traducciones se efectúan siguiendo las columnas de la siguiente tabla, de izquierda
a derecha:
Dir. lógica
1628
851
2700
2432
Núm. página
1628 div 512 = 3
851 div 512 = 1
2700 div 512 = 5
2432 div 512 = 4
Desplazamiento
1628 mod 512 = 92
851 mod 512 = 339
2700 mod 512 = 140
2432 mod 512 = 384
Dir. fı́sica
1 * 512 + 92 = 604
3 * 512 + 339 = 1875
2 * 512 + 140 = 1164
0 * 512 + 384 = 384
4. Un acceso sobre la dirección lógica 1330 corresponde a efectuar una referencia sobre
la página 2 (1330 div 512 = 2), que ahora mismo no está en memoria. Por tanto, se
darı́a un fallo de página.
5. 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.
2.2 Problema 3.2.9 (pág. 9)
Dado un sistema de M.V. con paginación por petición y el siguiente fragmento de código:
8
FOR i := 10 DOWNTO 1 DO
FOR j := 10 DOWNTO 1 DO
C[i, j] := C[i, j] + A[i, j] + B[i, j];
cuya traducción a ensamblador es:
INICIO:
BUCLE_i:
BUCLE_j:
FIN_BUCLE_j:
FIN_BUCLE_i:
Inicializar R0 a 11
Decrementar R0 una unidad
Salto si cero a FIN_BUCLE_i
Inicializar R1 a 11
Decrementar R1 una unidad
Salto si cero a FIN_BUCLE_j
Cargar R3 con A[R0, R1]
Cargar R4 con C[R0, R1]
Cargar R5 con B[R0, R1]
R3 <- R3 + R5
R4 <- R4 + R3
Grabar en C[R0, R1] el contenido de R4
Salto a BUCLE_j
Salto a BUCLE_i
...
Donde cada instrucción ocupa una palabra y R0 ... R5 son registros del procesador. Suponiendo que
la paginación del programa ha quedado como:
MATRIZ C
MATRIZ A
MATRIZ B
código y variables
página 0
página 1
página 2
página 3
¿Qué secuencia forman las páginas referenciadas en cada iteración del BUCLE j?
Suponiendo que cuando se vaya a ejecutar este fragmento de código (desde INICIO hasta FIN BUCLE i), la tabla de páginas contiene la siguiente información:
1
v
i
v
v
2
0
y que se tienen únicamente 3 marcos en memoria, ¿cuántos fallos de página provocarı́a esta suma de
matrices cuando se utiliza una polı́tica de reemplazo de páginas ÓPTIMO GLOBAL?. Calcúlese el valor
de la tasa de fallos de página ( ).
SOLUCIÓN:
Hay que ver en primer lugar cuál es la secuencia de direcciones emitida en cada iteración
del BUCLE j. Para ello, por cada instrucción seguro que hay que acceder a la página de
código, que es la 3 (para poder leer la instrucción y llevarla al procesador). Cuando la
instrucción accede a algún registro no hay que llevar a cabo ningún acceso especial, ya que
los registros se encuentran en el procesador. Sin embargo, cuando se acceda a una matriz
habrá que leer la página correspondiente (la 0 para la matriz C, la 1 para la A y la 2 para
la B).
Por tanto, veamos qué secuencia de accesos a página se efectúa:
9
Instrucción
Decrementar R1 una unidad
Salto si cero a FIN BUCLE j
Cargar R3 con A[R0, R1]
Cargar R4 con C[R0, R1]
Cargar R5 con B[R0, R1]
R3 <- R3 + R5
R4 <- R4 + R3
Grabar en C[R0, R1] el contenido de R4
Salto a BUCLE j
Págs.
3
3
3, 1
3, 0
3, 2
3
3
3, 0
3
Con ello, la secuencia ha sido 3, 3, 3, 1, 3, 0, 3, 2, 3, 3, 3, 0, 3. Es decir, un total de 13
accesos. Esto da origen a la siguiente serie de referencias: 3, 1, 3, 0, 3, 2, 3, 0, 3, donde
se han eliminado las repeticiones y que utilizaremos para averiguar el número de fallos de
página.
Para resolver esta segunda cuestión, vemos que las instrucciones incluidas en el BUCLE i
no acceden a ninguna de las matrices. Por tanto, únicamente necesitan un acceso a la
página 3 cada una de ellas. Esto implica que no están añadiendo nada nuevo a la serie de
referencias obtenida en el punto anterior.
Veamos ahora cuántos fallos se dan en cada iteración del BUCLE j siguiendo el algoritmo
de reemplazo óptimo.
marco 0
marco 1
marco 2
inic.
3
0
2
3
3
0
2
1
3
0
1
FP
3
3
0
1
0
3
0
1
3
3
0
1
2
3
0
2
FP
3
3
0
2
0
3
0
2
3
3
0
2
1
3
0
...
Como puede observarse, únicamente se dan dos fallos de página en cada una de las iteraciones. Además, se ha tenido la fortuna de encontrar las mismas páginas en los mismos
marcos tanto al principio como al final de una misma iteración. Eso quiere decir, que el
estudio realizado para una iteración puede extrapolarse a todas ellas. Por tanto, sólo se
darán 20 fallos de página durante la ejecución de todo el código presentado, ya que se
realizarán 10 iteraciones y en cada una de ellas habrá dos fallos.
Por último, para obtener la tasa de fallos de página debemos conocer cuántos accesos a
memoria se han realizado durante la ejecución de todo el programa. Para ello, habrá que
ver cuántas páginas son accedidas en cada instrucción y cuántas veces se ejecuta cada una
de ellas. Esto se resume en la siguiente tabla:
10
Instrucción
Inicializar R0 a 11
Decrementar R0 una unidad
Salto si cero a FIN BUCLE i
Inicializar R1 a 11
Decrementar R1 una unidad
Salto si cero a FIN BUCLE j
Cargar R3 con A[R0, R1]
Cargar R4 con C[R0, R1]
Cargar R5 con B[R0, R1]
R3 <- R3 + R5
R4 <- R4 + R3
Grabar en C[R0, R1] el contenido de R4
Salto a BUCLE j
Salto a BUCLE i
TOTAL
Págs.
1
1
1
1
1
1
2
2
2
1
1
2
1
1
Veces
1
11
11
10
110
110
100
100
100
100
100
100
100
10
Total
1
11
11
10
110
110
200
200
200
100
100
200
100
10
1363
Obsérvese que las dos primeras instrucciones de cada bucle (tanto del interno como del
externo) se ejecutan una vez más que el resto. Esto es debido a que, para comprobar la
finalización del bucle, se necesita efectuar de nuevo la operación de decremento del registro y la de comprobación y salto. Esto hace que las instrucciones Decrementar R0
una unidad y Salto si cero a FIN BUCLE i se ejecuten 11 veces, mientras que
Decrementar R1 una unidad y Salto si cero a FIN BUCLE j deban ejecutarse 110 (ya que iteran 11 veces cada vez que se ejecuta el BUCLE j, pero al estar
encerrado dentro del BUCLE i, se repite su ejecución 10 veces).
Con ello, la tasa de fallos de página es:
5 !$'! 49KL;M':.$!
o lo que es lo mismo: 1.46735%.
11

Documentos relacionados