Gestión de Archivos y Directorios en Sistemas Operativos
ARCHIVO
Un archivo es una secuencia de bytes almacenada en el disco, sin una estructura específica definida por el usuario. A veces, tienen una estructura mínima de organización, denominados registros. Los archivos se identifican con un nombre único, pueden ser de distinto tipo y tienen atributos como protección, propietario, tamaño y tiempo.
Operaciones con Archivos
- Crear, Eliminar
- Abrir: Al abrir, se accede a las tablas de información del disco para localizar el archivo y trasladar la información a memoria.
- Cerrar
- Leer: Se utiliza una zona de almacenamiento temporal: buffer.
- Escribir
- Buscar (Seek): Permite localizar el puntero de lectura/escritura en cualquier parte del archivo. Solo se permite en archivos de acceso directo.
- Obtener/Establecer atributos: Obtención/modificación de los atributos.
DIRECTORIOS
La organización de archivos se realiza mediante directorios. El directorio raíz (Root) es el origen de todos los demás, con una estructura en árbol invertido. La mayoría de los sistemas operativos almacenan los directorios como archivos estándar que contienen listas de otros archivos, excepto el directorio raíz.
Asignación de espacio para archivos y directorios
La forma en que el sistema operativo guarda la información de los bloques que contiene cada archivo es importante para el rendimiento del sistema. El bloque es la unidad mínima. Existen tres objetivos que entran en conflicto:
- Velocidad: Que el acceso al archivo sea lo más rápido posible. Es más lento cuanto más accesos al disco se requieran.
- Espacio: Que no existan huecos en el disco que no se puedan aprovechar y considerar el espacio perdido por el almacenamiento de la lista de bloques.
- Seguridad: Que los errores afecten lo menos posible a la información.
ASIGNACIÓN ADYACENTE
Cada archivo se almacena en un conjunto de bloques contiguos. En el directorio, basta con registrar el bloque inicial y la longitud del archivo.
Ventajas: Es un tipo de asignación rápida. Por cada acceso, basta con hacer dos lecturas: la primera para leer el directorio y la segunda para acceder al bloque de información. No necesita espacio adicional y es seguro.
Inconvenientes: Es difícil de implementar, ya que es necesario conocer el tamaño del archivo a priori. Se produce fragmentación externa y se desperdician espacios pequeños entre archivos.
Distribuido por Amoeba. Es para equipos muy potentes que priorizan la velocidad sobre el espacio. Asignación de huecos:
- Mejor Ajuste (BF): Asigna el bloque donde mejor encaje, dejando huecos más pequeños.
- Primer Ajuste (FF): Asigna el primer hueco disponible. Es rápido.
- Peor Ajuste (WF): Asigna el hueco donde deje un fragmento más grande, evitando huecos pequeños que no se podrán utilizar.
ASIGNACIÓN ENLAZADA
Almacena al principio de cada bloque físico la dirección física del siguiente bloque, utilizando punteros. El último bloque contiene un valor de fin de bloque.
Ventajas: No hay fragmentación externa, no necesita espacio adicional y es seguro.
Inconvenientes: Es lento en el acceso directo. Es necesario acceder a todos los bloques para llegar a uno específico. El tamaño de cada bloque ya no es una potencia de 2.
ASIGNACIÓN MEDIANTE UNA TABLA DE LOCALIZACIÓN
Las dos desventajas anteriores se solucionan eliminando la estructura secuencial.
Ventajas: No hay fragmentación externa y el acceso directo es más rápido, pero solo si se mantiene la tabla de localización en memoria.
Inconveniente: Si la tabla no se almacena en memoria, el acceso puede ser muy lento. Si se almacena, el espacio necesario es muy grande. Es muy vulnerable a fallos en el disco. La solución es mantener dos copias de la tabla.
MSDOS utiliza este tipo de asignación. Reserva espacio en el disco para la tabla de asignación, a la que llama FAT.
ASIGNACIÓN MEDIANTE NODOS ÍNDICE (UNIX)
Consiste en asociar a cada archivo un registro, denominado nodo índice (inodo), que almacena los atributos del archivo y la secuencia de bloques. Si el archivo ocupa más de 10 bloques, se utiliza el primer bloque indirecto (el undécimo), que contiene una lista con los siguientes bloques del archivo. Almacena múltiples inodos.
Ventajas: No hay fragmentación externa. En ficheros pequeños, la velocidad de acceso es alta. Si hay un fallo en el bloque que contiene un inodo, solo afectará a ese archivo.
Inconveniente: El acceso a bloques finales es muy lento.
Compartición de Archivos
Una forma eficaz de compartir información es permitir que un mismo archivo esté presente en varios directorios de usuarios diferentes. Esto se hace mediante enlaces.
El enlace físico va a los datos, el enlace simbólico va al índice físico.
Este tipo de estructuras convierte el sistema de archivos en un grafo acíclico dirigido, en lugar de una estructura de árbol estándar. Los enlaces entre directorios suelen estar prohibidos, porque se corre el riesgo de crear ciclos en las estructuras de directorios.
Administración del Espacio – Problemas a resolver
Tamaño del bloque: La pérdida de espacio al final del fichero debido a que el último bloque no esté completo se llama fragmentación interna. Un bloque de gran tamaño acelera la lectura, pero desperdicia espacio. Si es pequeño, se desperdicia menos espacio, pero es más lento. Para evitar la fragmentación interna, se usan bloques de 108 ficheros o menores, como Unix, que utiliza la compartición del último bloque de 108 ficheros.