|
|
Tema 2. Arquitectura del Sistema de Ficheros. |
1. TIPOS DE FICHEROS EN UNIXEn el sistema unix hay cuatro tipo de ficheros que a continuación comentaremos mas detalladamente. Son: los ficheros ordinarios, directorios, ficheros de dispositivo ( también llamados ficheros especiales) y las tuberías. FICHEROS ORDINARIOS:Los ficheros ordinarios contienen datos, textos y programas ejecutables (comandos). Y se pueden realizar siguientes operaciones con los datos de los ficheros:
Las operaciones que no se pueden realizar son:
Varios procesos a la vez pueden escribir y lee un mismo fichero. Esto dependerá del orden de las llamadas de entrada y salida individuales de cada proceso de la gestión que el planificar haga de los procesos. Actualmente hay en el mercado algunas versiones de unix que tienen bloqueo de ficheros y gestión de semáforos, esto se hace para controlar el acceso simultáneo a un mismo fichero. El acceso a un fichero ordinario es mediante los nodos-i. DIRECTORIOS:Los directorios lo que nos permiten es dar una estructura jerárquica a los sistemas de ficheros de Unix. Su mayor cometido es la de establecer la relación que existe entre el nombre de un fichero y su nodo-i correspondiente. Estructura de un directorio en el Unix System VEl Unix System V es una versión de unix en la cual un directorio cuyo datos están organizados como secuencias de entradas. Cada secuencia contiene un número de nodo-i y el nombre de un fichero que pertenece al directorio. A este conjunto se les llama enlace y puede haber varios nombres de ficheros que estén enlazados con un mismo nodo-i. Las entradas de directorios tienen un tamaño de 16 bytes, de los cuales 2 son dedicados al nodo-i y 14 al nombre del fichero. Estructura de un directorio:Las dos primeras entradas de un directorio reciben los nombres de .y ... Al fichero se le asocia el nodo-i del directorio actual y el fichero .. tiene asociado el nodo-i del directorio padre actual. Mediante el programa mkfs (make file system), q es un programa mediante el cual se crea un sistema de ficheros, se encarga también de que el fichero .. se refiera al propio directorio raíz. El núcleo maneja los datos de un directorio usando la estructura nodo-i y los bloques de acceso directo e indirecto. Los procesos pueden leer el contenido de un directorio, en cambio no pueden modificarlo. El permiso de escritura en un directorio únicamente lo tiene el núcleo. Los permisos de acceso a un directorio tienen los siguientes significados:
Estructura de un directorio en el sistema BSDEsta versión de unix tiene como objetivo fundamental establecer enlaces entre los nombres de los ficheros y los nodos-i al igual que la versión System V, la diferencia es que en BSD los nombres pueden ser más largos y no se reserva un espacio fijo de bytes para cada entrada del directorio. Los directorios de se encuentran en unidades conocidas como bloques de directorio. El tamaño de este se elige de tal forma que pueda ser transferido en una sola operación con el disco. Cada bloque de directorios se compone de entradas de directorios de tamaño variable . no esta permitida que una entrada este distribuida en mas de un bloque. Los tres primeros campos de entrada contienen:
El resto de la entrada contiene una cadena de caracteres terminada con el carácter nulo, este es un campo variable. FORMATO DE LAS ENTRADAS DE UN DIRECTORIO EN EL SISTEMA BSDEl espacio en libre de un directorio se registra en una o en varias entradas que lo acumulan en su campo tamaño de la entrada. La entradas son reconocidas rápidamente debido a su mayor espacio para almacenar sus campos de tamaño fijo además del campo nombre del fichero. Cuando la entrada de un directorio es borrada, el propio sistema añade un espacio libre a la entrada anterior. Si la primera entrada de un bloque estuviera libre, el numero de nodo-i que almacenaría esa entrada sería cero, esto se realiza para indicar que no esta reservada por ningún fichero. Acceso al contenido de un directorioPara leer un directorio utilizamos: open, read lseek,close, etc. Moverse por el interior de las jerarquías de directorios del sistema BSD es mas cómodo. Las funciones del interfaz son: opendir,readdir,rewindir, closedir, seekdir y telldir. Estas funciones pueden codificarse a partir de llamadas de manejo de los ficheros, para así poder ser emuladas sobre una red o un sistema no UNÍX. Conversión de ruta de acceso a nodo-iLos ficheros se sitúan en la jerarquía de directorios y se nombran mediante su ruta de acceso. Algunas llamadas reciben como parámetro de entrada la ruta de acceso a un fichero y no su nodo-i, como por ejemplo: open, chdir o link. El encargado de traducir la ruta de acceso de un fichero a su nodo-i correspondiente es el núcleo. La transformación es realizada por un algoritmo llamado namei, este se encarga de analizar los componentes de la ruta de acceso y de los nodos-i para saber si el fichero existe y verificar de que se trata de una ruta correcta. Dependerá de la ruta para que el nodo-i realice la búsqueda desde un punto u otro; por ejemplo: si la ruta es absoluta, la búsqueda del nodo-i del fichero se iniciará desde el directorio raiz; si la ruta es relativa, la búsqueda se iniciará en el directorio de trabajo actual, que tienen asociado el proceso que quiere acceder al fichero. Mientras se van recorriendo los nodos-i intermedios se va comprobando que el proceso tiene derechos de acceso a los directorios intermedios. FICHEROS ESPECIALES:Los ficheros especiales o también llamados ficheros de dispositivos son utilizados para que los procesos se comuniquen con los dispositivos periféricos (discos, cintas, impresoras...). Existen dos familias de ficheros de dispositivo:
Los módulos del núcleo que gestionan la comunicación con los dispositivos se conocen como manejadores de dispositivos. Los mas corriente es que cada dispositivo tenga su propio manejador, aunque hay excepciones en las cuales un manejador puede controlar toda una familia de dispositivos con características comunes. El sistema también puede soportar dispositivos software que no tienen asociado dispositivo físico. Como ya sabemos todos los ficheros tienen asociado un nodo-i. En los ficheros ordinarios y los directorios, el nodo-i nos indica los bloques donde se encuentran los datos del fichero. En cambio, en los ficheros de dispositivo no hay datos a los que referenciar, en este caso, el nodo-i contiene dos números conocidos como major number y minor number. El primero indica el número de dispositivo de que se trata y el segundo indica el número de unidad dentro del dispositivo. Lo que en realidad hacen estos números es buscar dentro de unas tablas una colección de rutinas que permiten manejar el dispositivo, esta es la que realmente construye el manejador de dispositivos. Para realizar una operación de entrada / salida sobre un fichero especial el núcleo se encarga de llamar al manejador de dispositivos. Bajate esta documentación en un archivo Acrobat Reader |