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