domingo, 6 de noviembre de 2011

Los nodos-i de UNIX

Nodos-i o nodos índice son estructuras de datos empleados en los sistemas UNIX como Linux. Estos poseen las características (permisos, fechas, ubicación, más no el nombre) de un archivo, directorio u objeto que se encuentre en el sistema de archivos. Los i-nodos (deriva de “nodo índice”) se identifican por un número entero positivo único dentro del sistema de archivos que almacena la mayor parte de la información acerca de un archivo específico, incluyendo:

El Tipo de archivo y los modos de acceso.
La identificación del usuario (UID) e identificación de grupo (GID) del propietario y grupo del archivo.
El tamaño del archivo.
El contador de enlaces (links).
El tiempo en el cual el archivo(s) se han modificado o tenido un acceso.
El número total de bloques de datos utilizados y/o asignados al archivo.

Un sistema de archivos depende de estructuras de datos que contienen la información y el contenido de los archivos (metadatos), es decir, datos que describen datos. Se almacena en alguna ubicación conocida de los discos como un arreglo de datos, donde el número i equivale a un entero que representa el índice en dicho arreglo, por los que el i-nodo es un elemento que se selecciona del arreglo que se asocia a un objeto del sistema de archivos, (archivo, directorio o enlace simbólico). A partir del número de i-nodo, la porción que contiene el controlador de los sistemas de archivos ubicado en el kernel (núcleo) puede acceder al contenido de este, incluyendo su ubicación en el dispositivo y por tanto permitir el acceso a dicho archivo.

Cuando se crea un sistema de ficheros se hace con una cantidad de i-nodos; si se acaban los i-nodos no será posible escribir en el disco aunque haya espacio libre. El tamaño máximo teórico de un archivo estará dado por la capacidad de direccionamiento que tenga el inodo.

Un nodo i contiene 10 punteros directos a bloques de datos del fichero, además, contiene un puntero indirecto simple con el que se apunta a un bloque que contiene punteros a bloques de datos del fichero. Este bloque puede albergar (1024 bytes: 4 bytes/dirección) direcciones, es decir, 256 direcciones a bloques de datos del fichero. Además, en el nodo i existe un puntero indirecto doble que apunta a un bloque que contiene punteros a bloques que contienen punteros a bloques de datos del fichero.

Los i-nodos también son la forma en la que un sistema GNU Linux identifica de forma unívoca a un archivo. Debido a que en GNU Linux un archivo se identifica por número un de i-nodo no por un nombre, porque un mismo archivo puede tener varios nombres, o incluso ninguno, lo que lo hace una entrada en un i-nodo de directorio denominada vínculo.

Puede existir un i-nodo con el mismo número en otro sistema de archivos. Aunque los i-nodos "en disco" pueden tener el mismo número si se encuentran en sistemas de archivo diferentes, los i-nodos "en memoria" tienen un número único a través de todo el sistema.

No hay comentarios:

Publicar un comentario