http://www.fing.edu.uy/inco/cursos/sistoper/examenes/2011/Sol2011JUL.pdf
solucion: 1 + 1 + 4096 + 1 + 4096 + 1 + 1808 = 10004
Se supone que se cuentan los accesos a memoria del sistema (arreglo del proceso + handler del kernel para el pageFault cuando va a buscar la pagina para cargar en el marco del proceso) y que el dir siempre esta en memoria (del proceso o del kernel pero, no hay swaping si el proceso esta cargado en memoria).
¿Porque supone que el handler "cachea el table_pointer que esta en el dir" y nunca mas tiene que ir a buscarlo al dir?
yo supuce 1+1+4096 + 1+1+4096 +1+1+1808 = 10006 lo que para mi seria coherente con la tabla de la parte iv , con un TLB con o sin ASID.
Al principio el proceso da un page fault, para buscar la pag0, le pasa el PTBR al handler del kernel.
var ptr_tabla = RAM[PTBR][2*2^d];//puntero de 2bytes a la "tabla_2^d" ESTE ACCESO SE CUENTA
TLB[n]=(hig(20,PTBR+2*2^d), f); //(key, frame) f=hig(20,PTBR+2*2^d)
vat ptr_pag = RAM[ptr_tabla][2*2^p] ESTE ACCESO SE CUENTA
TLB[n+1]=(hig(20,ptr_tabla+2*2^p), f1)
PC-- para que el proceso vuelva a hacer la llamada a memoria
...
--siguiente page fault-- para la pag1 (arreglo [4096])
//Encuentra todo en el TLB
//PTBR+2*2^d esta en el TLB pues esta su key hig(20,PTBR+2*2^d)
//f=hig(20,PTBR+2*2^d) ofset =low(12,PTBR+2*2^d)
var ptr_tabla = RAM[f+ofset];/ ESTE ACCESO SE CUENTA
//[ptr_tabla][2*2^p+2)] esta en el TLB pues esta su key hig(20,ptr_tabla+2*2^p)
//ofset =low(12, ptr_tabla+2*2^p+2)
vat ptr_pag = RAM[f1+ofset] ESTE ACCESO SE CUENTA
PC-- para que el proceso vuelva a hacer la llamada a memoria
......
lo mismo para la pag 2 pero cambia
//[ptr_tabla][2*2^p+4)] esta en el TLB pues esta su key hig(20,ptr_tabla+2*2^p)
//ofset =low(12, ptr_tabla+2*2^p+4)
vat ptr_pag = RAM[f1+ofset] ESTE ACCESO SE CUENTA
....
Se supone que el handler siempre accede a la misma tabla (2^d) en las entradas 2^p, 2^p+2 y 2^p+4 porque son tres paginas consecutivas.
¿En que me equivoque? (porque se supone que no tiene cache L1)
salu2