Directorio Los directorios no son más que estructuras de datos

Anuncio
Directorio
Los directorios no son más que estructuras de datos especiales que contienen
información acerca de otros archivos y directorios. Esas estructuras de datos
reciben el nombre de tablas de directorios.
Generalmente existe una tabla de directorio raíz que se construye cuando se
formatea el dispositivo (por ejemplo el disco) y que no puede ser alterada
nunca. Algunos campos de esa estructura pueden apuntar a archivos
especiales que contienen tablas de directorios iguales (en su forma) que la
tabla de directorio raíz, son los denominados subdirectorios.
La figura 1 presenta una tabla de directorio típica de un SO hipotético, como se
puede apreciar en esta estructura de datos están presentes diversos campos
para especificar datos acerca de los archivos referidos desde esa tabla.
Algunos sistemas de archivos no poseen mucha información en el directorio, se
pueden tener dos extremos, en uno el directorio solo contiene un nombre y un
puntero a otra estructura que complementa la información (Unix) en el otro
extremo el directorio contiene toda la información relativa al archivo, incluso su
localización completa (el ya obsoleto CP/M).
Nombre
Tipo
Dirección
Fecha
Hora
Tamaño
de inicio
Figura 1. Tabla de directorio de un SO hipotético.
Propietario
/
bin
lib
var
dev
temp
Trabajo
etc
X
Tarea
Figura 2. Estructura de árbol típica de un directorio del SO UNIX.
Un ejemplo, el sistema de archivo del SO Unix
En UNIX los archivos están organizados en directorios jerárquicos en forma de
árbol invertido (la raíz está arriba y las hojas abajo) esos directorios son a su
vez archivos especiales que contienen información acerca de otros archivos.
En la figura 2, el símbolo / representa al directorio raíz mientras bin, lib, var,
temp, etc, se dicen que son hijos del directorio raíz.
Obsérvese que el directorio temp tiene a su vez dos hijos:
¾ el primero, Trabajo, es un archivo, (por convenio, se han representado
los directorios por elipses y los archivos por rectángulos)
¾ el segundo, X, es un directorio, el cual a la vez tiene un hijo. Es fácil
observar como se forma la estructura de árbol.
Para acceder a un determinado archivo, se necesita recorrer el camino que
conduce a él, por ejemplo el camino que conduce al archivo Trabajo se debe
especificar de la siguiente forma:
Los caminos se denominan
¾ caminos absolutos, si comienzan especificando el directorio raíz (/)
como primer elemento, ejemplo /temp/X. Obsérvese que un camino
absoluto proporciona la ruta desde el directorio raíz hasta el directorio
especificado en la última parte de la cadena.
¾ caminos relativos, si comienzan a partir de un directorio dado que no
sea el raíz, ejemplo X/Tarea
UNIX utiliza dos estructuras de datos para localizar un archivo en disco:
¾ La tabla de directorio
¾ El nodo i (ó i-node)
Algunos nombres de directorios son estándar en todas las versiones de UNIX
(al menos en la mayoría), por ejemplo:
/bin. Contiene los comandos más comunes.
/dev. Contiene manipuladores de dispositivos (device drivers) especiales que
controlan el acceso a los periféricos.
/etc. Contiene programas y archivos de datos del sistema. Los archivos en el
directorio /etc/default contienen información que usa el sistema por defecto.
/lib. Contiene bibliotecas para "C" y otros lenguajes de programación.
/mnt. Es un directorio vacío reservado para montar sistemas de archivos.
/tmp. Contiene archivos temporales creados por programas del SO. Los
archivos están presentes cuando se está ejecutando el programa.
/usr. Aloja los directorios de todos los usuarios del sistema y otros directorios
que contienen comandos y archivos de datos adicionales.
La tabla de directorio de UNIX es una estructura de datos bien simple que
contiene dos campos:
¾ El primer campo contiene el nombre del archivo.
¾ El segundo campo contiene un puntero o referencia a otra estructura de
datos, denominada nodo i o i-node.
La figura 3, proporciona una idea general de esta organización. En este caso
se muestra un disco que contiene una tabla de directorio que contiene dos
archivos ordinarios (f1 y f2) y un directorio (D1). Cada entrada de la tabla de
directorio apunta a un nodo i que se detallará mas adelante, por ahora es
importante comprender que existe un nodo i para cada archivo o directorio.
Aunque D1 es un subdirectorio del directorio que se muestra como ejemplo, no
existe mucha diferencia entre él y los archivos f1 y f2 debido a que un
subdirectorio no es más que un archivo especial que contiene referencias a
otros archivos.
Nombre Ref. nodo i
f1
f2
D1
Figura 3. La Tabla de Directorio de UNIX
Información
general
acerca
del
archivo
Puntero 1
.
.
.
Puntero 10
Bloque indirecto
Bloque indirecto doble
Bloque indirecto triple
Figura 4. El Nodo-i
Un directorio del sistema operativo Windows, contiene mucha más información,
UNIX también necesita de esa información (y de otra más) pero la tiene
localizada en el nodo i, a diferencia de Windows que la tiene en el directorio.
El nodo i
Todo sistema de archivo necesita conocer donde está localizada
la
información que contienen sus archivos y también necesita conocer la cantidad
de espacios libres y ocupados que existen en sus medios de almacenamiento.
El nodo i es una estructura muy importante en el sistema de archivo del SO
UNIX. Cada archivo posee un nodo i que es referenciado desde la tabla de
directorio. Esa estructura de datos posee mucha información acerca del archivo
y además contiene un conjunto de punteros que permiten encontrar los lugares
del disco donde está localizado el archivo. Observe la figura 4.
Descargar