Problema 2. Septiembre de 2000 Dado un disco de 4 GBytes con tamaño de bloque de 1KBytes se quieren analizar los dos siguientes sistemas de ficheros: 1.- Sistema de ficheros tipo UNIX con las siguientes características: Representación del fichero mediante nodos-i con 10 direcciones directas a bloque, un indirecto simple, un indirecto doble y un indirecto triple y direcciones de bloque de 4 bytes. El sistema utiliza un mapa de bits para la gestión del espacio vacío. 2.- Sistema de ficheros tipo MS-DOS (FAT) con las siguientes características: Entradas de 4 bytes y tamaño de agrupaciones de 4 bloques. Se pide: A- ¿Cuál es el tamaño máximo de los ficheros en cada sistema de ficheros? B- ¿Qué tamaño ocupan la FAT y el mapa de bits en cada caso? C- Se desea abrir un fichero llamado datos.txt que se encuentra en el directorio user y acceder a los bytes 133.120.500 (32.500 * 4096 + 500) y 134.144.750 (32750 * 4096 +750). Si nos encontramos en el directorio raíz, ¿cuál será el número de accesos a disco para realizar la anterior operación en cada sistema de ficheros? D- ¿Dónde se almacenan los atributos del fichero en cada sistema de ficheros? ¿Qué problemas puede presentar este sistema de atributos en MS-DOS? Solución problema 2 Septiembre de 2000 AUnix: 10 bloques directos a bloque 1024/4 bloques con indirección simple (1024/4)^2 bloques con indirección doble (1024/4)^3 bloques con indirección triple Tamaño máximo de fichero: (10 + 256 + 256^2 + 256^3)bloques * 1024Bytes/bloque = 16Gbytes La máxima longitud de fichero que podría ser alcanzada con este esquema es de aproximadamente 16 Gbytes. Al ser el disco de 4 Gbytes, el fichero estaría limitado por este tamaño. MS-DOS: Usando la FAT descrita en el enunciado el tamaño máximo de fichero viene determinado por el tamaño de disco, 4GBytes, ya que la FAT es simplemente una lista enlazada y el direccionamiento especificado es suficiente para apuntar a todas las agrupaciones (4 bytes = 32 bits; 2^32 = 4GB). NOTA: Se ha considerado despreciable el tamaño que ocupan el mapa de bits y la FAT en cada uno de los casos. BMS-DOS: Tenemos un disco con 4GBytes con 1KByte de tamaño de bloque y 4KBytes de tamaño de agrupación. De esta forma en la FAT se necesita 1 Mega entradas. Cada entrada de la FAT apunta a una agrupación y tiene un tamaño de 4Bytes, por lo que el tamaño total de la FAT es de 4MBytes. UNIX: El mapa de bits incluye 1 bit para cada recurso existe, es decir, un bit por cada bloque de disco o nodo-i. En total se tienen que controlar 4 Mega bloques por lo que son necesarios 512 bloques para el mapa de bits, es decir 512 KBytes (4Mbloques*1 bit/8 bits/byte= 512 KBytes). Nota: hay que tener en cuenta que en MS-DOS se ha direccionado a nivel de agrupación y en UNIX a nivel de bloque. CMS-DOS: Para poder acceder al fichero se necesitan los siguientes accesos a disco: 1 lectura del directorio raíz para localizar el directorio user 1 lectura del directorio user para localizar el fichero datos.txt Una vez localizado el fichero son necesarios los siguientes accesos: Los bytes a leer se encuentran en las agrupaciones 32500 y 32750, por tanto se necesitan 32750 accesos a la FAT para localizar las agrupaciones más 2 accesos para leer los datos pedidos de disco. En total 32754 accesos. UNIX: Para acceder al fichero: Traer el bloque / a memoria y buscar la entrada /user Traer el nodo-i de /user a memoria Traer un bloque de /user a memoria y buscar la entrada de datos.txt Traer el nodo-i de datos.txt a memoria Por tanto para acceder al fichero necesitamos 4 accesos a memoria. Para leer los datos hay que acceder a los bloques 32500 * 4 = 130000 y 32750 * 4 = 131000 Para direccionar estos bloques necesitamos los punteros de triple indirección del nodo-i (con los punteros de doble indirección se llega al bloque: 10+256+256*256= 65802). Accesos requeridos: 3 para acceder a los 3 niveles de indirección 1 para acceder al bloque donde se encuentra el primer byte 3 para acceder a los 3 niveles de indirección 1 para acceder al bloque donde se encuentra el segundo byte Total 12 accesos. D.En MS-DOS los atributos se guardan en la entrada del directorio, mientras que en UNIX se almacenan en el nodo-i. Los problemas que se presentan en MS-DOS son que al modificar los atributos hay que acceder a la información de los directorios y la complicación que supone el crear enlaces a archivos.