segundo parcial 2022 diciembre ejercicio 3.b

segundo parcial 2022 diciembre ejercicio 3.b

de Florencia Bueno Blanco -
Número de respuestas: 3

Buen dia como están? al mirar la solución de este ejercicio no comprendo como se llega al resultado final, particularmente por que se resta esa cantidad y como se representaría? alguien me podría dar una mano? muchas gracias!

En respuesta a Florencia Bueno Blanco

Re: segundo parcial 2022 diciembre ejercicio 3.b

de Mateo Elisee Lengronne Gilles -
Buenas, no me queda clara la parte de sectores y la relación con las direcciones, puede ser algo sencillo pero no me queda claro a aprtir de la letra, no ecnotré algo relacionado en las diapositivas del curso, muchas gracias!
En respuesta a Mateo Elisee Lengronne Gilles

Re: segundo parcial 2022 diciembre ejercicio 3.b

de Santiago Freire Lopez -
Hola Mateo,

Entiendo que te refieres a la parte 1.a del ejercicio. Generalmente en la FAT, para marcar el final de un archivo se utiliza el valor -1 y para un bloque no utilizado el -2, siempre y cuando estos números sean representables en el tipo de números utilizado por los elementos de la FAT.

En este caso el tipo de los elementos de la FAT es entero (con signo), donde se pueden representar números negativos. Por lo tanto la solución usa -1 y -2, pero se podrían haber puesto otros valores. Lo importante es usar un valor que esté permitido por la estructura definida, siempre y cuando no haya restricciones de letra en cuanto a ello. Por ejemplo, si la FAT está definida como fat : array[0..MAX_BLOQUES-1] of (-2..MAX_BLOQUES-1) podrías usar -2 para bloque no usado y -1 para fin de archivo o incluso viceversa, pero no podrías usar el valor -3 u otros menores.

Espero que esto conteste tu pregunta y cualquier duda nos escribís.

Saludos,
sf
En respuesta a Florencia Bueno Blanco

Re: segundo parcial 2022 diciembre ejercicio 3.b

de Santiago Freire Lopez -
Hola Florencia,

Según indica la letra, debido a que se usa un modelo de bloques agrupados de a dos, en el sistema de archivos planteado aunque un archivo/directorio requiera un solo bloque para almacenar sus datos, se le asignarán siempre dos bloques de forma contigua. Como no se pueden asignar más bloques que CANT_BLOQUES, como cada archivo/directorio ocupa dos bloques, el máximo (sin contar las dir entries ni el directorio raíz) es CANT_BLOQUES/2.

Como mencioné antes eso es sin contar las entradas de directorio. Hay que ver cuántos bloques precisaríamos para almacenar CANT_BLOQUES/2 dir entries:

Cada dir entry es de 32 bytes, un bloque es de 2048 bytes. Por lo tanto en un bloque entran 2048/32 = 64 dir entries. Se requieren entonces (CANT_BLOQUES/2)/64 = CANT_BLOQUES/(2*64) bloques para almacenar las dir entries.

Sin embargo, al usar cada archivo/directorio 2 bloques, tenemos CANT_BLOQUES ocupados por archivos/directorios, y no nos queda espacio para guardar los CANT_BLOQUES/(2*64) bloques para las dir entries. Hay que ver cuántos bloques tendríamos que sacar de los archivos para que entren. Sabemos que al borrar un archivo/directorio con un bloque asignado se liberan dos bloques por el método de asignación del ejercicio, por lo que preciso liberar en archivos/directorios la cantidad de bloques necesarios para almacenar las dir entries entre 2 (ya que por un archivo borrado, tengo dos bloques vacíos). Esta cuenta queda entonces como (CANT_BLOQUES/(2*64))/2, que es equivalente a CANT_BLOQUES/(2*64*2).

Por lo tanto el máximo de archivos es (CANT_BLOQUES/2) - CANT_BLOQUES/(2*64*2), y en el caso de directorios se suma uno por el directorio raíz.

De cualquier forma ten en cuenta que al preguntar la cantidad máxima de archivos o directorios que se pueden almacenar en un sistema de archivos, a menos que la letra lo especifique, se suelen tomar todos como vacíos, así no hay que asignarles un bloque en el sistema de archivos (sí puede haber que asignarle otra cosa, por ejemplo en el caso de inodos todo archivo o directorio aunque esté vacío debe tener un inodo asignado).

Espero que con esto te quede claro y si tenés alguna otra duda nos escribís.

Saludos,
sf