• No se han encontrado resultados

PDF Soluciones a Algunas Cuestiones Y Problemas

N/A
N/A
Protected

Academic year: 2023

Share "PDF Soluciones a Algunas Cuestiones Y Problemas"

Copied!
11
0
0

Texto completo

(1)

SOLUCIONES A ALGUNAS CUESTIONES Y PROBLEMAS

1 CUESTIONES

1.1 Cuesti´on 3.1.4 (p´ag. 3)

Sup´ongase un sistema de memoria paginada por petici´on. La tabla de p´aginas se implementa en registros.

Cuesta 8 ms. servir un fallo de p´agina en caso de que haya sitio para la p´agina o si la p´agina reemplazada no ha sido modificada (dirty bit a 0). En caso de que la p´agina 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´agina 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 ´agina y queremos que el tiempo de acceso efectivo no exceda de 2 s: ¿cu´al es la mayor tasa de fallos de p´agina (p) aceptable?

SOLUCI ´ON:

Para responder a esta cuesti´on hay que considerar la expresi´on dada para el TAE en los sistemas donde se utiliza paginaci´on 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´agina entre memoria y disco (TTP) sea uniforme (no cuesta lo mismo efectuar una lec- tura que una escritura) y, adem´as, tambi´en se ha considerado el porcentaje de ocasiones en las que no era necesario aplicar reemplazo (este dato faltaba en la versi´on de los ejer- cicios que se ha dejado en reprograf´ıa este a˜no). Con ello, habr´a que definir los siguientes par´ametros:

TAE: Tiempo de acceso efectivo. Deseamos que sea 2 s.

p: Probabilidad de que se d´e fallo de p´agina. Hay que averiguar su valor.

p : Probabilidad de que sea necesario un reemplazo. Es decir, probabilidad de que no haya ning´un marco libre en memoria cuando se haya dado el fallo de p´agina. Se nos dice que es igual a 0.5.

p : Probabilidad de que la p´agina v´ıctima tenga el bit de modificaci´on 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´agina cuando no hay que escribir la p´agina v´ıctima en disco. En nuestro caso, 8 ms.

TFP : Tiempo de servicio de un fallo de p´agina cuando deba escribirse la p´agina v´ıctima en disco. En nuestro caso, 20 ms.

(2)

Con todo ello, la expresi´on 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´agina en el acceso.

2. Un tiempo TFP cuando se produzca fallo de p´agina y haya que escribir la p´agina v´ıctima en disco. Eso s´olo suceder´a cuando est´e llena la memoria (p ) y adem´as est´e modificada la p´agina v´ıctima (p ).

3. Un tiempo TFP cuando se produzca fallo de p´agina y s´olo haya que cargar la p´agina solicitada. Eso ocurre cuando se da el fallo y, o bien quedan marcos libres, o bien la p´agina v´ıctima no fue modificada. La probabilidad de que esto ocurra, si se ha dado un fallo de p´agina, es (1 - p *p ).

Para terminar, habr´a que dar el resultado pedido. Es el siguiente (Se expresan las unidades de tiempo en s):

! "#$!!!%&'! %#($!!)*+,-/.0!!12 !$!1

3*4556!67

*556!67

556!6

89!!!:(56:.<;

Es decir, la probabilidad de que se d´e un fallo de p´agina ha de ser 0.000081974 o de un 0.0081974%.

1.2 Cuesti´on 4.5 (p´ag. 17)

Dada la siguiente secuencia de referencias a p´aginas (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 ´area activa (working-set) y considerando el anterior instante de muestreo, indicar cu´al de las siguientes afirmaciones es verdadera:

1. Si el ´area activa es = 0,3,6> , el tama˜no de la ventana es 3.

2. Si el tama˜no de la ventana es 8, el ´area activa es= 0,2,3,6> .

3. El ´area activa actual depende de la anterior ´area activa, y de las nuevas referencias a p´aginas hasta el momento del muestreo.

4. Si el tama˜no de la ventana coincide con el n´umero de p´aginas del proceso, entonces puede mante- ner todas sus p´aginas en memoria f´ısica.

5. Ninguna de las anteriores.

(3)

SOLUCI ´ON:

Veamos cada una de las afirmaciones por separado:

1. FALSA. El tama˜no de la ventana (? ) se refiere al n´umero de referencias que hemos tenido en cuenta al realizar la muestra y no al n´umero de p´aginas que forman el ´area activa.

Por tanto, si? hubiera sido 3, el ´area activa habr´ıa estado formada por las p´aginas

= 0, 6> (que han sido las ´unicas que aparec´ıan en esas ´ultimas tres referencias).

Por contra, para mantener a las p´aginas 0, 3 y 6 en el ´area 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 ´ultimas antes del instante de muestreo. En esa serie ´unicamente aparecen las p´aginas 0, 2, 3 y 6, por lo que el ´area activa ser´a= 0, 2, 3, 6 > .

3. FALSA. El ´area activa actual no depende para nada de la anterior ´area activa. Cuan- do se describi´o el modelo no se dijo en ning´un momento que la anterior ´area activa debiese ser considerada. Para calcular una nueva ´area activa s´olo debemos fijarnos en las ´ultimas? referencias antes del instante de muestreo.

4. FALSA. Por mucho que ? coincida con el n´umero de p´aginas del espacio l´ogico del proceso, no hay ninguna raz´on que garantice que ´este pueda tener todas sus p´aginas en memoria f´ısica.

Por ejemplo, si un proceso tiene 400 p´aginas en su espacio l´ogico y hacemos que? sea tambi´en igual a 400, no podemos saber qu´e p´aginas distintas hemos llegado a encontrar en esas? referencias. Eso depende de la localidad de referencia del pro- ceso. Como m´aximo podr´ıamos llegar a encontrar ese n´umero, pero es casi imposible hacerlo (Para ello, el proceso hubiese tenido que dar un solo acceso en cada una de las p´aginas antes de volver a repetir cualquier n´umero de p´agina. Resulta imposible dise˜nar un programa que efect´ue ese patr´on de accesos).

De todas formas, debe tenerse en cuenta que la secuencia de referencias que estudia- mos para aplicar el modelo del ´area activa no es una serie de referencias donde se han eliminado las repeticiones. Como puede verse en el ejemplo de esta misma cues- ti´on, en la secuencia pueden aparecer repeticiones. Es muy raro que un programa no acceda varias veces seguidas a una misma p´agina de c´odigo. T´omese como ejemplo la p´agina de c´odigo que ahora mismo est´e ejecutando el proceso. En ella aparecer´an las instrucciones del programa, y estas seguir´an un orden secuencial (estando esas instrucciones en la misma p´agina) hasta que se encuentre una instrucci´on de salto.

5. FALSA. Como ya se ha dicho anteriormente, la afirmaci´on correcta era la segunda.

1.3 Cuesti´on 4.6 (p´ag. 18)

En un sistema inform´atico sin M.V., un proceso emite las direcciones 1027 y 2051, las cuales son trans- formadas por el mecanismo de gesti´on de memoria en las direcciones f´ısicas 2051 y 3. Este sistema inform´atico puede estar utilizando:

1. ´Unicamente paginaci´on, segmentaci´on o segmentaci´on paginada.

2. ´Unicamente paginaci´on o segmentaci´on paginada.

3. ´Unicamente paginaci´on.

(4)

4. ´Unicamente particiones m ´ultiples fijas o variables.

5. Ninguna de las anteriores.

SOLUCI ´ON:

Esta cuesti´on puede resolverse con lo visto en el tema 2. Para ello, basta con fijarse en el tipo de la direcci´on l´ogica empleada y las correspondencias existentes entre las dos direcciones l´ogicas y sus corresponidentes direcciones f´ısicas.

Con el tipo de direcci´on l´ogica, dado como un ´unico n´umero, sabemos que no se trata de ning´un sistema segmentado ni segmentado-paginado. Si se utilizara alg´un tipo de segmen- taci´on, la direcci´on l´ogica 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´on efectuada entre las direcciones l´ogicas y las f´ısicas, podemos ob- servar que no se ha utilizado asignaci´on contigua. Esto se deduce del hecho de que la direcci´on l´ogica m´as baja corresponde a la direcci´on f´ısica mayor. Para que esto sea po- sible, las dos direcciones l´ogicas deben pertenecer a dos fragmentos distintos del espacio l´ogico a los que se han asociado distintos fragmentos del espacio f´ısico. Esto hace que la cuarta afirmaci´on tambi´en sea FALSA, ya que las particiones m´ultiples (tanto fijas como variables) utilizaban asignaci´on contigua.

La respueta correcta es la tercera. En la paginaci´on, las direcciones l´ogicas se especifica- ban con un ´unico valor (como ha sido el caso) y adem´as, ´esta era una t´ecnica de asignaci´on dispersa (por lo que los fragmentos antes mencionados ser´ıan p´aginas).

Como posible ejemplo, as´umase que el tama˜no de p´agina de ese sistema era igual a 1024 octetos. Con ello, la primera direcci´on l´ogica corresponder´ıa al n´umero de p´agina 1 con desplazamiento 3, mientras que la segunda direcci´on corresponder´ıa al n´umero de p´agina 2 con el mismo desplazamiento. Asociando el marco 2 a la p´agina 1 y el marco 0 a la p´agina 2, se hubiese dado la traducci´on propuesta en el enunciado.

1.4 Cuesti´on 4.7 (p´ag. 18)

Sea un sistema de M.V. con segmentaci´on paginada. Cada direcci´on l´ogica consta de 16 bits, siendo posible diferenciar como m´aximo 16 segmentos por proceso. El tama˜no de p´agina 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´on:

PROCESO SEGMENTO TAMA ˜NO

A 0 260

1 380

B 0 250

1 1010

2 403

Los marcos se asignan en orden creciente.

Las tablas de segmentos y p´aginas no consumen memoria f´ısica, que se encuentra inicialmente vac´ıa.

(5)

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´on que se satisface al final de la secuencia:

1. La fragmentaci´on interna provocada por el proceso A es de 129 octetos.

2. La fragmentaci´on externa es de 146 octetos.

3. Se han producido 6 fallos de p´agina.

4. Una direcci´on l´ogica (B, 2, 180) har´ıa referencia a la direcci´on f´ısica 948.

5. Ninguna de las anteriores.

SOLUCI ´ON:

Habr´a que ver el resultado de procesar esas direcciones l´ogicas. A partir de ´el, ya se podr´a contestar.

Empezaremos averiguando el formato de las direcciones l´ogicas y f´ısicas. Con ello sabre- mos el n´umero de marcos existentes y c´omo se organiza el espacio l´ogico. Para ello:

Sabemos que el tama˜no de p´agina es igual a 256 octetos. Como log (256) = 8, enton- ces se necesitan 8 bits para los campos de desplazamiento.

Como el tama˜no de la memoria f´ısica es igual a 1024 octetos, tendremos A@ BDCDE F;

marcos en memoria f´ısica.

Si puede haber 16 segmentos en el espacio l´ogico, se necesitan log (16) = 4 bits para mantener el n´umero de segmento.

Como tenemos 16 bits para toda la direcci´on l´ogica, el n´umero de p´agina necesitar´a p = 16 - ( 4 + 8 ) = 4 bits.

Ahora hay que verificar la correcci´on de las direcciones l´ogicas emitidas y dividirlas en sus n´umeros de p´agina 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´on es correcta.

n´um. p´ag. = G DCDE$IAHD@ = 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´on es correcta.

n´um. p´ag. = G DCDEC 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´on es correcta.

n´um. p´ag. = G1JDCDEE J I = 1 desplaz. = 363 mod 256 = 107

(6)

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´on es correcta.

n´um. p´ag. = G1JDCDEHD@ 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´on es correcta.

n´um. p´ag. = G DCDEA@D@ 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´on es correcta.

n´um. p´ag. = G A@D@D@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´on es correcta.

n´um. p´ag. = G DCDEJDJ I = 0 desplaz. = 33 mod 256 = 33

Una vez hecho esto y recordando que tenemos cuatro marcos, vamos a ver c´omo queda la memoria tras emitirse esta serie de referencias (se ha marcado en negrita la p´agina elegida como v´ıctima al efectuar un reemplazo):

(B,0,0) (A,1,0) (A,1,1) (B,2,1) (A,0,0) (B,1,3) (B,2,0) marco 0 (B,0,0) (B,0,0) (B,0,0) (B,0,0) (B,0,0) (B,1,3) (B,1,3) marco 1 (A,1,0) (A,1,0) (A,1,0) (A,0,0) (A,0,0) (A,0,0)

marco 2 (A,1,1) (A,1,1) (A,1,1) (A,1,1) (A,1,1)

marco 3 (B,2,1) (B,2,1) (B,2,1) (B,2,0)

FP FP FP FP FP FP FP

Ahora ya se puede responder acerca de la veracidad o falsedad de cada una de las afirma- ciones efectuadas:

1. La fragmentaci´on interna provocada por el proceso A es de 129 octetos.

FALSA. En el segmento cero se est´an perdiendo 512 - 260 = 252 octetos (ya que ese segmento tiene dos p´aginas y su longitud es igual a 260 octetos). Adem´as, en el seg- mento 1 se pierden tambi´en 512 - 380 = 132 octetos. En total, la fragmentaci´on interna para el proceso A es de 252 + 132 = 384 octetos.

2. La fragmentaci´on externa es de 146 octetos.

FALSA. En un sistema paginado o segmentado-paginado no hay fragmentaci´on ex- terna.

3. Se han producido 6 fallos de p´agina.

FALSA. En la tabla anterior se aprecia que se ha producido un fallo de p´agina en cada uno de los accesos. En total, han sido 7.

4. Una direcci´on l´ogica (B, 2, 180) har´ıa referencia a la direcci´on f´ısica 948.

CIERTA. Si ahora se accede al direcci´on mencionada, perteneciente a la p´agina (B,2,0) no se va a producir ning´un fallo de p´agina. Esa p´agina est´a presente en el marco 3.

Por tanto, su direcci´on f´ısica asociada ser´a:

dir. f´ıs. = n´um. marco * tam. marco + desplazamiento dir. f´ıs. = 3 * 256 + 180 = 768 + 180 = 948

(7)

5. Ninguna de las anteriores.

FALSA. Ya hemos visto que la afirmaci´on cierta era la anterior.

2 PROBLEMAS

2.1 Problema 3.2.2 (p´ag. 6)

Un sistema de memoria virtual (paginaci´on por petici´on), tiene un tama˜no de p´agina de 512 palabras, una memoria virtual de 16 p´aginas 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 ´ON CONTENIDO

0 comienza p´agina 4 deP

... ...

512 comienza p´agina 9 deP

... ...

1024 comienza p´agina 5 deP

... ...

1536 comienza p´agina 1 deP siendoPun proceso.

1. Mostrar el contenido de la tabla de p´aginas.

2. Idem tras generar cada una de las siguientes direcciones l´ogicas: 1112, 1645, 2049, 622, 2776 (suponiendo que el algoritmo de reemplazo de p´aginas utiliza estrategia ´optima).

3. Direcciones f´ısicas equivalentes a las l´ogicas 1628, 851, 2700 y 2432.

4. ¿Qu´e pasa cuando se referencia a la direcci´on l´ogica 1330?.

5. Si la p´agina cargada en la trama 3 es un procedimiento que otro procesoQquiere compartir, ¿d´onde debe aparecer en la tabla de p´aginas deQ?

SOLUCI ´ON:

1. El contenido inicial de la tabla de p´aginas ser´a (Obs´ervese que en la tabla anterior nos estaban dando la p´agina ubicada en cada uno de los cuatro marcos existentes):

Marco Validez

0 0

1 3 1

2 0

3 0

4 0 1

5 2 1

6 0

7 0

Marco Validez

8 0

9 1 1

10 0

11 0

12 0

13 0

14 0

15 0

(8)

2. Para resolver el segundo apartado hay que encontrar en primer lugar el n´umero de p´agina asociado a cada uno de las direcciones l´ogicas 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´omo queda la memoria tras esta serie de referencias:

inic. 2 3 4 1 5

marco 0 4 4 4 4 4 4

marco 1 9 2 3 3 3 3

marco 2 5 5 5 5 5 5

marco 3 1 1 1 1 1 1

FP FP

Como se utiliza el algoritmo ´optimo, se elige como v´ıctima aquella p´agina que tardar´a m´as en volverse a utilizar, o aquella que ya no vuelva a necesitarse. En el primer reemplazo se ha elegido la p´agina 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´aginas queda como sigue:

Marco Validez

0 0

1 3 1

2 0

3 1 1

4 0 1

5 2 1

6 0

7 0

Marco Validez

8 0

9 0

10 0

11 0

12 0

13 0

14 0

15 0

3. Las traducciones se efect´uan siguiendo las columnas de la siguiente tabla, de izquierda a derecha:

Dir. l´ogica N ´um. p´agina Desplazamiento Dir. f´ısica 1628 1628 div 512 = 3 1628 mod 512 = 92 1 * 512 + 92 = 604

851 851 div 512 = 1 851 mod 512 = 339 3 * 512 + 339 = 1875 2700 2700 div 512 = 5 2700 mod 512 = 140 2 * 512 + 140 = 1164 2432 2432 div 512 = 4 2432 mod 512 = 384 0 * 512 + 384 = 384 4. Un acceso sobre la direcci´on l´ogica 1330 corresponde a efectuar una referencia sobre

la p´agina 2 (1330 div 512 = 2), que ahora mismo no est´a en memoria. Por tanto, se dar´ıa un fallo de p´agina.

5. Deber´ıa aparecer en la misma entrada donde aparece para el proceso P, ya que en caso contrario el c´odigo presente en ella podr´ıa no funcionar bien (Si hay una ins- trucci´on de salto que no es relativa al valor del contador de programa, y la posici´on destino de ese salto se encuentra en la misma p´agina, se est´a obligando a que ese mar- co est´e asociado siempre a la misma p´agina para todos los procesos que lo utilicen).

Por tanto, ha de aparecer asociado a la p´agina 1 del procesoQ.

2.2 Problema 3.2.9 (p´ag. 9)

Dado un sistema de M.V. con paginaci´on por petici´on y el siguiente fragmento de c´odigo:

(9)

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´on a ensamblador es:

INICIO: Inicializar R0 a 11

BUCLE_i: Decrementar R0 una unidad Salto si cero a FIN_BUCLE_i Inicializar R1 a 11

BUCLE_j: 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

FIN_BUCLE_j: Salto a BUCLE_i FIN_BUCLE_i: ...

Donde cada instrucci´on ocupa una palabra yR0... R5son registros del procesador. Suponiendo que la paginaci´on del programa ha quedado como:

MATRIZ C p´agina 0 MATRIZ A p´agina 1 MATRIZ B p´agina 2 c´odigo y variables p´agina 3

¿Qu´e secuencia forman las p´aginas referenciadas en cada iteraci´on delBUCLE j?

Suponiendo que cuando se vaya a ejecutar este fragmento de c´odigo (desdeINICIOhastaFIN BU- CLE i), la tabla de p´aginas contiene la siguiente informaci´on:

1 v

i

2 v

0 v

y que se tienen ´unicamente 3 marcos en memoria, ¿cu´antos fallos de p´agina provocar´ıa esta suma de matrices cuando se utiliza una pol´ıtica de reemplazo de p´aginas ´OPTIMO GLOBAL?. Calc´ulese el valor de la tasa de fallos de p´agina ( ).

SOLUCI ´ON:

Hay que ver en primer lugar cu´al es la secuencia de direcciones emitida en cada iteraci´on delBUCLE j. Para ello, por cada instrucci´on seguro que hay que acceder a la p´agina de c´odigo, que es la 3 (para poder leer la instrucci´on y llevarla al procesador). Cuando la instrucci´on accede a alg´un registro no hay que llevar a cabo ning´un acceso especial, ya que los registros se encuentran en el procesador. Sin embargo, cuando se acceda a una matriz habr´a que leer la p´agina correspondiente (la 0 para la matriz C, la 1 para la A y la 2 para la B).

Por tanto, veamos qu´e secuencia de accesos a p´agina se efect´ua:

(10)

Instrucci´on P´ags.

Decrementar R1 una unidad 3

Salto si cero a FIN BUCLE j 3

Cargar R3 con A[R0, R1] 3, 1

Cargar R4 con C[R0, R1] 3, 0

Cargar R5 con B[R0, R1] 3, 2

R3 <- R3 + R5 3

R4 <- R4 + R3 3

Grabar en C[R0, R1] el contenido de R4 3, 0

Salto a BUCLE j 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´umero de fallos de p´agina.

Para resolver esta segunda cuesti´on, vemos que las instrucciones incluidas en elBUCLE i no acceden a ninguna de las matrices. Por tanto, ´unicamente necesitan un acceso a la p´agina 3 cada una de ellas. Esto implica que no est´an a˜nadiendo nada nuevo a la serie de referencias obtenida en el punto anterior.

Veamos ahora cu´antos fallos se dan en cada iteraci´on delBUCLE jsiguiendo el algoritmo de reemplazo ´optimo.

inic. 3 1 3 0 3 2 3 0 3 1 3 0 ...

marco 0 3 3 3 3 3 3 3 3 3 3

marco 1 0 0 0 0 0 0 0 0 0 0

marco 2 2 2 1 1 1 1 2 2 2 2

FP FP

Como puede observarse, ´unicamente se dan dos fallos de p´agina en cada una de las ite- raciones. Adem´as, se ha tenido la fortuna de encontrar las mismas p´aginas en los mismos marcos tanto al principio como al final de una misma iteraci´on. Eso quiere decir, que el estudio realizado para una iteraci´on puede extrapolarse a todas ellas. Por tanto, s´olo se dar´an 20 fallos de p´agina durante la ejecuci´on de todo el c´odigo presentado, ya que se realizar´an 10 iteraciones y en cada una de ellas habr´a dos fallos.

Por ´ultimo, para obtener la tasa de fallos de p´agina debemos conocer cu´antos accesos a memoria se han realizado durante la ejecuci´on de todo el programa. Para ello, habr´a que ver cu´antas p´aginas son accedidas en cada instrucci´on y cu´antas veces se ejecuta cada una de ellas. Esto se resume en la siguiente tabla:

(11)

Instrucci´on P´ags. Veces Total

Inicializar R0 a 11 1 1 1

Decrementar R0 una unidad 1 11 11

Salto si cero a FIN BUCLE i 1 11 11

Inicializar R1 a 11 1 10 10

Decrementar R1 una unidad 1 110 110

Salto si cero a FIN BUCLE j 1 110 110

Cargar R3 con A[R0, R1] 2 100 200

Cargar R4 con C[R0, R1] 2 100 200

Cargar R5 con B[R0, R1] 2 100 200

R3 <- R3 + R5 1 100 100

R4 <- R4 + R3 1 100 100

Grabar en C[R0, R1] el contenido de R4 2 100 200

Salto a BUCLE j 1 100 100

Salto a BUCLE i 1 10 10

TOTAL 1363

Obs´ervese que las dos primeras instrucciones de cada bucle (tanto del interno como del externo) se ejecutan una vez m´as que el resto. Esto es debido a que, para comprobar la finalizaci´on del bucle, se necesita efectuar de nuevo la operaci´on de decremento del re- gistro y la de comprobaci´on y salto. Esto hace que las instruccionesDecrementar R0 una unidadySalto si cero a FIN BUCLE ise ejecuten 11 veces, mientras que Decrementar R1 una unidady Salto si cero a FIN BUCLE j deban eje- cutarse 110 (ya que iteran 11 veces cada vez que se ejecuta el BUCLE j, pero al estar encerrado dentro delBUCLE i, se repite su ejecuci´on 10 veces).

Con ello, la tasa de fallos de p´agina es:

$

5!'!

49KL;M':.$!

o lo que es lo mismo: 1.46735%.

Referencias

Documento similar

1º ESO. Calcular todos los múltiplos de 17 comprendidos entre 800 y 860. Factorizar 342 y calcular su número de divisores.. Calcular por el algoritmo de Euclides, el m.c.d. Un faro