Cuestionario almacenamiento en disco y gestión de memoria. 1. Suponer que se dispone de un disco donde el tamaño del bloque es de 12 bytes y se usan 32 bits para referenciar cada uno de los bloques. Si se desea almacenar un fichero cuyo tamaño es de 10 Kbytes, ¿cuántos bloques son necesarios si se usa asignación encadenada? ¿Cuántos bits se desperdician en el último bloque (sin datos ni dirección de bloque)? Asignación encadenada: 508 bytes 4 bytes Datos REF. Trabajo = 10 Kbytes = 10240 bytes 10240 / 508 = 20’15 que equivalen a 21 bloques y resto = 80. Forma larga para hallar ese resto: 508 * 20 = 10160 bytes 10240 – 10160 = 80 bytes 508 – 80 = 428 bytes desperdiciados. 2. Uno de los ficheros existentes en el sistema posee 100 registros lógicos de 250 bytes cada uno. El tamaño de los bloques físicos del disco es de 512 bytes. Los registros lógicos están organizados en forma secuencial desde el punto de vista lógico. a. ¿A cuántos bloques se deben acceder para disponer del registro lógico 485 si el espacio se asigna de forma contigua? 1000 * 250 = 250000 bytes Trabajo / bloque = 250000 / 512 = 488’28 que equivalen a 489 bloques contiguos. 250 bytes * 485 = 121250 bytes 121250 – 120832 = 418 Por lo tanto: Comienza en el bloque 237 y continúa en el 238. b. Si las direcciones ocupan 12 bytes, ¿cuántos bloques son necesarios si se usa asignación encadenada para almacenar el citado fichero? ¿Cuántos bytes se desperdician en el último bloque (sin datos ni dirección a bloques)? 500 bytes 12 bytes Datos REF. 250000 / 500 = 500 bloques. No se desperdician bytes. c. Si en cada bloque caben 40 direcciones, ¿cuántos bloques de datos son necesarios si se usa asignación indexada para almacenar el citado fichero? ¿Cuántos bloques son necesarios para mantener la tabla de índices (bloques de índices)? Tamaño trabajo = 489 bloques de datos. 489 / 40 = 12’225 que equivalen a 13 bloques para la tabla 13 + 1 (para mantener la tabla de índices) = 14 bloques Nº de direcciones = 0’225 * 40 = 9 direcciones. 3. En un sistema de ficheros, los discos son de 20 Mbytes y el tamaño del bloque físico es de 1024 bytes. Para apuntar a un bloque se requieren 4 bytes. a. ¿Estando libre una zona del disco que contiene el 50% de los bloques, qué técnica de control de espacio libre (mapa del disco y lista de bloques libres) usa menos espacio en disco? Nº bloques/disco = Tamaño disco / tamaño bloque = 20 Mbytes / 1024 bytes = 20480 bloques Mapa del disco: ocupa 20480 bits = 2’5 Kbytes Lista: 4 * 10240 = 40960 = 40 Kbytes Mapa del disco usa menos espacio. b. ¿Y si la zona del disco libre corresponde al 25% de los bloques? Mapa: 2’5 Kbytes Lista: 5120 * 4 = 20 Kbytes 4. Teniendo en cuenta la estructura interna usada por el SO Unix para implementar un directorio, ¿cuál sería el tamaño máximo del fichero que este SO puede aceptar si el tamaño del bloque es de 1 Kbyte y se usan 32 bits para direccionar un bloque? 10 direcciones (direcciones directas) = 10 bloques * 1 Kbyte = 10Kbytes 11 dirección (indirecta simple) apunta: 1 bloque índices = 256 direcciones * 1 Kbyte = 256 Kbytes Nº direcciones / bloque = tamaño bloque / tamaño dirección = 1 Kbyte / 4 byte = 256 direcciones 12 dirección (indirecta doble) = 256 * 256 bloque = 65536 Kbytes = 64 Mbytes 13 dirección (indirecta simple) = 256 * 256 * 256 bloque = 16 Gbytes Tamaño máximo fichero = 16 Gbytes + 64 Mbytes + 256 Kbytes ; esto equivale a 16 Gbytes 5. Suponer que se dispone de un disco donde el tamaño del bloque es de 256 bytes y se usan 64 bits para referenciar cada uno de los bloques. Responder a las siguientes cuestiones, si se desea almacenar un fichero cuyo tamaño es 9535 bytes y el sistema de ficheros usa asignación indexada: a. ¿Cuántos bloques de datos son necesarios? ¿Cuántos bytes quedan libres en dichos bloques de datos)? Bloque = 256 bytes Ref = 64 bits = 8 bytes Trabajo = 9535 bytes Nº de bloques = trabajo/tamaño bloque = 9536 / 256 = 37 con resto 63 Por lo tanto: son necesarios 38 bloques. 256 – 63 = 193 Se ocupan 37 bloques completos y 193 bytes libres en el bloque 38. b. ¿Cuántos bloques son necesarios para mantener la tabla de índices (bloque de índices)? ¿Cuántos bytes quedan libres en dichos bloques de índices? 256/8 = 32 referencias/bloque 32 direcciones 2 direcciones 240 bytes libres 1er nivel 15 direcciones 136 bytes libres 2º nivel c. ¿Hasta qué tamaño puede crecer el fichero si el sistema de ficheros sólo admite dos niveles para la tabla de índices? 256 * 32 * 32 = 262144 bytes 1 1 … 32 … 32 Tabla de índices 256 bytes 6. Un sistema de ficheros utiliza una técnica de asignación de espacio indexada con dos niveles de índices. Cada bloque físico puede contener un máximo de 128 direcciones al siguiente nivel. ¿Cuántos bloques de datos y de índices serán necesarios para almacenar un fichero de 10000 registros si cada uno de estos ocupa un bloque físico. 1 1 … 1 … 1 79 … 16 10000 / 128 = 78 con resto 16. EL trabajo ocupa 79 bloques + 1 para el primer nivel.