SISTEMAS OPERATIVOS. Grado en Ingenierı́a Informática. 2014 TGR 3: Memoria Ejercicios a resolver por los alumnos 1. Un sistema de 16 bits tiene paginación sin memoria virtual, El tamaño de página es de 4K y cada entrada de la tabla de páginas tiene 8 bits, cuyo significado es el siguiente • bit 0: proteccion (1:r/w) • bit 1: privilegio (1: supervisor) • bit 2 y 3: 00 entrada valida; 11 entrada no valida • bits 4-7: dirección del marco fśico En un instante dado la memoria del sistema está como se muestra a continuación 0xE000 0xD000 P2 CODE 0 P1 STACK 0 0xC000 0xB000 P1 STACK 1 0xA000 0x9000 P1 DATA 0 0x8000 0x7000 0x6000 0x5000 0x4000 0x3000 P2 CODE 1 P2 DATA 0 P1 DATA 1 P2 STACK 0 P1 CODE 0 0x2000 0x1000 0x0000 S.O. (data) S.O. (code) a) ¿Cuánta memoria hay instalada en el sistema? 15 páginas de 4Kbytes, 60 Kbytes b) ¿Cuánta hay libre? 16 Kbytes c) Sabiendo que en dicho sistema los procesos ven el S.O. (código y datos) en las direcciones más altas de su espacio virtual, que el código lo ven en las direcciones virtuales más bajas, que los datos están en la zona inmediatamente superior al código, y que la pila está en las direcciones virtuales altas (inmediatamente inferior al S.O.), construir las tablas de páginas que para dichos procesos en dicho sistema reflejan la situación descrita F E D C B A 9 8 7 6 5 4 3 2 1 0 página 13 02 B1 D1 0C 0C 0C 0C 0C 0C 0C 0C 0C 51 91 30 Proceso P1 13 02 41 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 61 70 E0 Proceso P2 d) ¿ Es razonable un tamaño de página de 4K en un sistema de 16 bits? ¿por qué? Aunque para hacer el ejercicio, queda muy sencillo 16 bits y página de 4K (4 bits num página y 12 bits desplazamiento, que corresponden a 1 y 3 cifras hexadecimales respectivamente) un tamaño de página de 4K es excesivamente grande para uns sistema de 16 bits. Presentarı́a muchı́sima fragmentación interna. 2. En un sistema con paginación bajo demanda con páginas de 4K y 1GB de memoria instalada, la memoria tiene un tiempo de acceso de 55 ns y el disco utilizado para paginación tiene un tiempo medio de búsqueda de 3 ms, una latencia de 1 ms y una velocidad de transferencia de 4 Mbytes/seg. a) ¿ Cual es el tiempo efectivo de acceso a memoria si la probabilidad de fallo de página es de 10−6 (1 fallo por cada millon de accesos)? 60 ns El tiempo de servicio del fallo de página lo podemos aproximar al tiempo de lectura de la página desde disco, es decir, búsqueda + latencia + transferencia. Puesto que el disco transfiere 4Mbytes/seg, para transferir una página (4K) emplea aproximadamente 1ms. Por tanto el tiempo de servicio del fallo de página es de 5 ms (búsqueda + latencia + transferencia). El tiempo efectivo de acceso a memoria es: 00 999999.55ns + 10−6 ∗ 5ms '= 60ns b) Suponiendo que la probabilidad de fallo de página es inversamente proporcional a la cantidad de memoria instalada, ¿cuál serı́a el tiempo efectivo de acceso si pasamos de 1GB a 4 Gb instalados en el sistema? ¿Aumentará la velocidad aparente del sistema? Como el el caso anterior supondremos que el tiempo de servicio del fallo de página son 5 ms. Si la probabilidad de fallo de página es inversamente proporcional a la cantidad de memoria instalada en el sistema, al aumentar la memoria de 1 GB a 4 GB la probabilidad de fallo de página pasará a ser 00 25.10−6 y por tanto el tiempo efectivo de acceso a memoria quedará: 00 99999975.55ns + 00 25.10−6 ∗ 5ms '= 560 3ns Al disminuir el tiempo efectivo de acceso a memoria, el sistema irá más rápido 3. Considŕense los siguientes códigos /********** PROGRAMA A ****************/ }#define FIL 4096 #define COL 1024 main() { int a[FIL][COL]; int i,j; for (i=0;i<FIL;i++) for (j=0;j<COL;j++) a[i][j]=0; while(1); } /********** PROGRAMA B ****************/ #define FIL 4096 #define COL 1024 int a[FIL][COL]; main() { int i,j; for (i=0;i<FIL;i++) for (j=0;j<COL;j++) a[i][j]=0; while(1); } y las salidas del comando pmap a continuación ####################### PMAP 1 ######################### 0000000000400000 684K r-x-- /home/antonio/SO/TGR-2014/a.out 00000000006ab000 4K rw--- /home/antonio/SO/TGR-2014/a.out 00000000006ac000 16396K rw--[ anon ] 0000000002fef000 140K rw--[ anon ] 00007fffe2fda000 132K rw--[ stack ] 00007fffe2fff000 4K r-x-[ anon ] ffffffffff600000 4K r-x-[ anon ] total 17364K ###################### PMAP 2 ######################### 0000000000400000 684K r-x-- /home/antonio/SO/TGR-2014/a.out 00000000006ab000 4K rw--- /home/antonio/SO/TGR-2014/a.out 00000000006ac000 12K rw--[ anon ] 0000000001fc5000 140K rw--[ anon ] 00007fff3d646000 16396K rw--[ stack ] 00007fff3e7ff000 4K r-x-[ anon ] ffffffffff600000 4K r-x-[ anon ] total 17244K a) ¿ Se trata de un sistema de 32 bits? No, es de 64 bits b) ¿Cuál es el tamaño de página e esta arquitectura? 4K c) ¿Puede determinartse que salida del comando pmap corresponde a cada código? Si. Con enteros de 4 bytes la matriz a tiene un tamaño de 16 Mbytes. La salida del comando pmap donde la pila tiene espacio para almacenar una variable de ese tamaño corresponde al código deonde dicha variable es local. Por tanto PMAP 2 corresponde al código del PROGRAMA A