Examen de Sistemas Operativos II EJERCICIO 2 Febrero de 2007 Tiempo estimado: 75 min. Puntuación: 5 puntos En una máquina tipo MINIX se utiliza un disco de arranque con las siguientes características: tamaño: 360K. formateado para soportar 95 i-nodos útiles el primer bloque del disco es el 0. SE PIDE (utilizar las hojas de respuestas que se adjuntan): a) Indicar los números de bloques de disco asignados a cada uno de los componentes del sistema de ficheros propuesto (formato lógico del disco). Razonar brevemente la respuesta. (1 punto) b) Teniendo en cuenta que cada entrada de un directorio consume 16 bytes (2 para el número de inodo y 14 para el nombre del fichero) y que las dos primeras entradas están asignadas a los ficheros . y .., indicar RAZONADAMENTE b.1) ¿Cuántos ficheros de 1K byte pueden llegar a crearse como máximo en este disco (colgando del directorio raíz)?. ¿Cuántos bloques de disco consume el directorio raíz?. (1 punto) b.2) ¿Cuántos ficheros de 8 Kbytes? ¿Cuántos bloques de disco consume el directorio raíz? (1 punto) c) Suponiendo que el contenido completo de S.F. consta de: directorio raíz (/), directorio (/d1), directorio (/d2), directorio (/d1/d11) y fichero (/d1/d11/f1), que el tamaño de todos los directorios/ficheros es menor de 1024 bytes y que los directorios/ficheros se crearon en el orden en el que se han presentado, indicar los accesos que el G.F realiza a la tabla de i-nodos y a la cache de bloques cuando un proceso de usuario con directorio de trabajo “/d2” ejecuta la llamada open(“/d1/d11/f1”,…). Suponer que en la tabla de i-nodos del G.F. sólo están cargados los i-nodos del directorio raíz y del directorio de trabajo del proceso de usuario y que la llamada al sistema no falla. (2 puntos) Respecto a la tabla de i-nodos del Gestor de Ficheros: Los ÚNICOS campos a tener en cuenta para solucionar el ejercicio son: i-zone[9] (números de zona para punteros directos, indirecto simple e indirecto doble), i_size (tamaño del fichero), i_nlinks (número de enlaces), i_mount (indica sistema de ficheros montado) e i_mode (bits de protección, tipo de fichero y bits SETUID y SETGID). En cada entrada de la hoja de soluciones se pueden indicar hasta tres campos que se modifiquen/consulten de un determinado i-nodo, anotando el número de i-nodo al que se accede, el nombre del campo(s) y una breve descripción de la razón del acceso (por cada campo). Respecto a la cache de bloques del Gestor de Ficheros: Rellenar una entrada de la hoja de soluciones por cada bloque que se cargue en la cache para ser consultado/modificado o por cada bloque que encontrándose ya en la cache se consulte/modifique. En la columna “Descripción” indicar el tipo de bloque al que se está accediendo (superbloque (S), bloque de mapa de bits de i-nodos (MBI-N), bloque de mapa de bits de zonas (MBZ), bloque de i-nodos (I-N), bloque de directorio (DIR), bloque indirecto (Ind) o bloque de datos (DAT)), así como la razón del acceso. Examen de Sistemas Operativos II Febrero de 2007 Apellidos: ................................................................................................... Nombre: ................................................................. Nº matrícula: ................... EJERCICIO 2 HOJA DE SOLUCIONES a) Indicar los números de bloques de disco asignados a cada uno de los componentes del sistema de ficheros. Razonar brevemente la respuesta. (1 punto) A Nºs de bloques 0 S 1 MBI MBZ 2 3 DATOS I-NODOS 4 5 6 7 359 Explicación: Autoarranque: ocupa un único bloque Superbloque: ocupa un único bloque Mapa de bits de i-nodos (MBI): necesitamos 96 bits para reflejar el estado de 96 i-nodos. Ocupa un único bloque Mapa de bits de zonas (MBZ): necesitamos tantos bits como zonas de datos (360 zonas - 7 administrativas= 353 bits). Ocupa un único bloque. I-nodos: En cada bloque de 1024 bytes caben 32 i-nodos. Para albergar 95 i-nodos útiles (96 contando con el i-nodo 0) necesitamos 3 bloques de datos Bloques de datos: del número 7 al número 359: 353 bloques. b.1) Número máximo de ficheros de 1 Kbyte que pueden llegar a crearse colgando del directorio raíz. (1 punto) Disponemos de 353 bloques de datos. El número máximo de ficheros de 1Kbyte que pueden crearse viene determinado por el hecho de que este sistema de ficheros sólo dispone de capacidad para 95 i-nodos útiles (1 para el directorio raíz y 94 para otros ficheros). Asignando un bloque de datos (1Kbyte) a cada uno de los 94 ficheros, nos restan 353-94 = 259 bloques. Tal y como se indica en el siguiente apartado, el directorio raíz consume dos bloques, por lo que nos restarían 257 bloques que no se usarían en esta situación Número de bloques de disco que consume el directorio raíz: El directorio raíz tendría 94 + 2 (para . y ..) entradas = 96. En un bloque de 1024 bytes caben 64 (1024/16) entradas. El directorio raíz consume dos bloques de datos en esta situación. b.2) Número máximo de ficheros de 8 Kbytes que pueden llegar a crearse colgando del directorio raíz. (1 punto) Disponemos de 353 bloques de datos. Un fichero de tamaño 8 Kbytes consume 9 bloques de datos (7 bloques de datos a los que apuntan los 7 punteros directos del i-nodo, 1 indirecto simple y 1 bloque de datos al que apunta el indirecto simple). Disponiendo de 353 bloques podríamos crear 39 (353/9 = 39,222…) ficheros de 8 Kbytes y sobrarían 2 bloques, de los cuales 1 hace falta como bloque de datos del directorio raíz (tal y como se calcula en el siguiente apartado) y el otro no se usaría en esta situación. Número de bloques de disco que consume el directorio raíz: El directorio raíz tendría 39 + 2 (para . y ..) entradas = 41. En un bloque de 1024 bytes caben 64 (1024/16) entradas. El directorio raíz consume un bloque de datos en esta situación. c) Llamada al sistema df = open(“/d1/d11/f1”, …). (2 puntos) Tabla de i-nodos: Nº de i-nodo Nombre del Campo(s) 1 i_mount, i-mode, i-zone[0] 2 i_mount, i-mode, i-zone[0] 4 i_mount, i-mode, i-zone[0] 5 i-mode Descripción: razón del acceso Comprueba que no hay un sistema de ficheros montado. Comprueba que se trata de un directorio y consulta si el proceso tiene permiso de búsqueda. Obtiene el número del primer bloque de datos (el bloque 7). Comprueba que no hay un sistema de ficheros montado. Comprueba que se trata de un directorio y consulta si el proceso tiene permiso de búsqueda. Obtiene el número del primer bloque de datos (el bloque 8). Comprueba que no hay un sistema de ficheros montado. Comprueba que se trata de un directorio y consulta si el proceso tiene permiso de búsqueda. Obtiene el número del primer bloque de datos (el bloque 10). Comprueba si el proceso tiene permiso de apertura indicado en el segundo parámetro de la llamada open. Cache de bloques: Número de bloque Descripción: tipo de bloque y razón del acceso DIR /. Busca una entrada con nombre “d1” y obtiene su número de i-nodo (el 2). 7 I-N. Obtiene los 32 bytes del i-nodo 2. 4 DIR /. Busca una entrada con nombre “d11” y obtiene su número de i-nodo (el 4). 8 I-N. Obtiene los 32 bytes del i-nodo 4. 4 DIR /. Busca una entrada con nombre “f1” y obtiene su número de i-nodo (el 5). 10 I-N. Obtiene los 32 bytes del i-nodo 5. 4