Ejercicio 2 - Duda sobre inodos, directorios y bloques

Ejercicio 2 - Duda sobre inodos, directorios y bloques

de Diego Ismael Marichal Chavez -
Número de respuestas: 1

Hola, en la parte b del ejercicio me han surgido muchas dudas, en particular tengo un entrevero respecto a que es un inodo y que información tiene, y tambien que es dir_entry. 

Segun entiendo un inodo apunta a bloques del disco, y cada bloque tiene su respectivos dir_entry y cada dir_entry puede ser o bien un archivo o un directorio, y lo mismo pasa con los inodos. No entiendo como darme cuenta que debo buscar y donde lo debo buscar, y porque no busco directo en un inodo o que sucede si un inodo o dir_entry es un directorio.

Creo que el problema que tengo es que no puedo visualizarlo en una representación de lo que esta pasando, capaz que un diagrama o boceto de como se conectan todas las cosas me dejaría mas claro todo, y tambien entender que es un inodo, directorio.

Saludos y muchas gracias.

Diego


En respuesta a Diego Ismael Marichal Chavez

Re: Ejercicio 2 - Duda sobre inodos, directorios y bloques

de Jorge Merlino -

Tenés que pensar que hay dos capas, en una capa de almacenamiento tenemos que saber los bloques que tiene cada archivo. A ese nivel ni nos importa como se llama el archivo, solo que tiene cierto tamaño y que está ocupando ciertos bloques. Esa capa podría estar implementada con inodos, fat, asignación contigua, etc.

Por encima de esa tenés la capa que maneja los archivos y directorios. Ahí tenés que saber el nombre del archivo, los permisos, etc y una referencia a la capa de abajo para saber donde están los bloques. Esa referencia puede ser un número de inodo o el primer bloque en caso de fat, etc. Podés pensar que los directorios son archivos pero que en lugar de contener datos del usuario contienen dir_entries. Se almacenan igual que los archivos comunes usando la capa de abajo que corresponda. Entonces el dir_entry para un directorio D va a tener una referencia a donde están los bloques donde se guardan las dir_entries de ese directorio (es una estructura de árbol) y a su vez esos dir_entries van a indicar los archivos y directorios que hay adentro del directorio D.

Un detalle más que capaz que te confunde: en general un inodo no tendría por que saber si lo que está guardando es un archivo o un directorio y en la práctica seguramente no lo sepa. En este ejercicio esa información está "duplicada" en el inodo para facilitar la implementación de la parte 1. Si querés pensá como habría que hacerlo si esta información no estuviera también en el inodo.

No me da para hacer un dibujo acá pero si tenés más dudas mejor que preguntes en el práctico.

Saludos