• No se han encontrado resultados

Estructura del sistema de archivos

In document Conceptos de Sistemas Operativos (página 156-158)

Los discos proveen el lugar para almacenar el sistema de archivos. Para mejorar la eficiencia de I/O, la transferencia entre la memoria y el disco es realizada en unidades de bloques. Cada bloque esta en uno o más sectores. Dependiendo del drive de disco, los sectores varían desde 32 bytes a 4096 bytes; usualmente son de 512 bytes. Los discos tienen dos características importantes que los hacen un medio conveniente para almacenar los archivos:

1. Se pueden rescribir; es posible leer un bloque del disco, modificarlo y volver a escribirlo en el mismo lugar del disco.

2. Podemos acceder directamente a un bloque dado de información en el disco. Por eso, es simple acceder a cualquier archivo tanto aleatoria como secuencialmente, y cambiar desde un archivo a otro solo requiere mover la cabeza de lectura-escritura y esperar para que rote el disco.

Organización del sistema de archivo: Para proveer un acceso eficiente y conveniente al disco, el sistema operativo impone un sistema de archivo para permitir que los datos sean almacenados, ubicados y recuperados fácilmente. Un sistema de archivo plantea dos problemas de diseño bastante diferentes. Uno de ellos es como debe el usuario ver el sistema de archivo. Esta tarea involucra la definición de un archivo y sus atributos, las operaciones que se pueden hacer sobre él, y la estructura del directorio para organizar los archivos. El segundo es que se deben crear algoritmos y estructuras de datos para mapear el sistema de archivos lógico en el dispositivo de almacenamiento secundario físico.

El sistema de archivos esta compuesto de varios niveles. La estructura mostrada en la figura 11.1 es un ejemplo de un diseño en capas. Cada nivel en el diseño usa las características de los niveles inferiores para crear nuevas características para que las usen los niveles superiores.

El nivel más bajo, el control de I/O, consiste de drivers de dispositivos y manipuladores de interrupciones para transferir la información entre la memoria y el sistema de disco. Un driver de dispositivo puede ser pensado como un traductor. Su entrada consiste de comandos de alto nivel tal como “retrieve block 123” (recuperar bloque 123). Su salida consiste de instrucciones especificas de hardware de bajo nivel, las cuales son usadas por el controlador de hardware, el cual une el dispositivo de I/O con el resto del

Programas de aplicación

Sistema de archivo lógico

Módulo de organización de archivo

Control de I/O Sistema de archivo básico

Dispositivos

sistema. El driver de dispositivo usualmente escribe patrones de bit específicos en una ubicación especial de la memoria del controlador de I/O para decirle al controlador en cual lugar del dispositivo actuar y que acciones tomar.

El sistema de archivo básico solo necesita emitir comandos genéricos para el driver del dispositivo apropiado para leer y escribir bloques físicos en el disco. Cada bloque físico esta identificado por su dirección numérica de disco (por ejemplo: drive 1, cilindro 73, pista 2, sector 10).

El módulo de organización de archivo conoce sobre los archivos y sus bloques lógicos, como así también de los bloques físicos. Conociendo el tipo de asignación de archivo usado y la ubicación del archivo, el módulo de organización de archivo puede traducir direcciones de bloques lógicas a direcciones de bloque físicas para que el sistema de archivo básico transfiera. Los bloques lógicos del archivo son numerados desde 0 (o 1) hasta N, mientras que los bloques físicos conteniendo el dato usualmente no son los mismos números que los bloques lógicos, por lo que la traducción es necesaria para ubicar cada bloque. El módulo de organización de archivo también incluye la administración del espacio libre, el cual lleva pista de los bloques libres y los provee a medida que le son pedidos.

Finalmente, el sistema de archivo lógico usa la estructura de directorio para proveer al módulo de organización de archivo con información que más tarde necesitara, dando un nombre simbólico de archivo. El sistema de archivo lógico también es responsable de la protección y seguridad.

Para crear un nuevo archivo, un programa de aplicación llama al sistema de archivo lógico. El sistema de archivo lógico conoce el formato de la estructura de directorio. Para crear un nuevo archivo, lee el directorio apropiado en memoria, lo cambia con la nueva entrada, y vuelve a escribir el directorio en el disco. Algunos sistemas operativos, incluyendo UNIX, tratan un directorio igual que un archivo, (hay un campo que indica que es un directorio). Otros sistemas operativos, incluyendo Windows NT, implementan llamadas al sistema diferentes para archivos y para directorios, y tratan a los directorios como entidades separadas de los archivos.

Ahora que el archivo se ha creado, puede ser usado para I/O. Para cada operación de I/O, la estructura de directorio puede ser explorada para encontrar el archivo, chequear los parámetros, ubicar sus bloques de datos, y finalmente realizar la operación sobre los bloques. Cada operación podría ocasionar un alto overhead. Más bien, antes de que el archivo pueda ser usado para procedimientos de I/O, éste debe ser abierto. Cuando es abierto, se recorre la estructura de directorio para encontrar la entrada de archivo deseada en el directorio. Parte de la estructura de directorio es almacenada en memoria para aumentar la velocidad de operaciones de directorio. Una vez que se encontró el archivo, la información asociada tal como el tamaño, el dueño, los permisos de acceso y la ubicación de los bloques de datos, es copiada en una tabla en memoria, la tabla de archivos abiertos, donde está toda la información de todos los archivos abiertos actualmente.

La primer referencia al archivo (normalmente un open) causa que la estructura de directorio sea recorrida y la entrada de directorio para el archivo sea copiada en la tabla de archivos abiertos. El índice de ésta tabla se retorna al programa del usuario, y todas las demás referencias se hacen a través de este índice en lugar de por medio del nombre. El nombre dado para el índice puede variar. Los sistemas UNIX se refieren a este como el descriptor del archivo, Windows NT como un manejador de archivo, y otros sistemas como un bloque de control de archivo. Consecuentemente, cuando el archivo es cerrado por todos los usuarios que lo han abierto, la información modificada del archivo es copiada en la estructura de directorio en disco.

Algunos sistemas utilizan múltiples niveles de tablas en memoria. Por ejemplo, en el sistema de archivo de UNIX BSD, cada proceso tiene una tabla de archivos abiertos que mantienen una lista de punteros. Cada entrada de esta lista apunta a una tabla de archivos abiertos del sistema (systemwide). Esta tabla contiene información fundamental de la entidad abierta. Para archivos, cada entrada de ésta tabla apunta a una tabla de inodes activos. Para otras entidades, tales como conexiones de red y dispositivos, apunta a información de acceso similar. La tabla de inodes activos es una tabla de inodes actualmente en uso, que esta en memoria, e incluye un campo que apunta a los bloques de datos en disco. En realidad, un open primero recorre la tabla de archivos abiertos para ver si el archivo ya esta abierto por algún otro usuario. Si lo esta, se crea una entrada en la tabla de archivos abiertos del proceso que apunta a la tabla de

archivos abiertos del sistema (systemwide). Si no lo esta, el inode es copiado en la tabla de inodes activos, se crea una nueva entrada en la systemwide para dicho archivo y se crea una nueva entrada en la tabla de archivos abiertos del proceso.

Carga del sistema de archivo: Así como un archivo debe ser abierto antes de ser usado, el sistema de archivos debe ser cargado antes de estar disponible para los procesos del sistema. El procedimiento de carga es el siguiente: se le da al sistema operativo el nombre del dispositivo, y la ubicación en la estructura de archivo al cual vincular el sistema de archivo (llamado el punto de carga, el cual es el lugar donde se cargara el sistema de archivo). Por ejemplo, en los sistemas UNIX, un sistema de archivo conteniendo los directorios del usuario (sea home), puede ser montado como /home; luego, para acceder a la estructura de directorio en este sistema de archivo, uno podría preceder al nombre de directorio deseado con /home, como por ejemplo, /home/jane. Cargando este sistema de archivo bajo /users resultara en el nombre de camino /users/jane para alcanzar el mismo directorio.

Luego, el sistema operativo verifica que el dispositivo contiene un sistema de archivo valido. Lo hace analizando si el directorio tiene el formato esperado. Finalmente, el sistema operativo marca en su estructura de directorio que un sistema de archivo fue cargado en el punto de carga especificado. Este esquema permite al sistema operativo recorrer su estructura de directorio, intercambiando entre los sistemas de archivos a medida que sea apropiado.

In document Conceptos de Sistemas Operativos (página 156-158)