Sistemas de Archivos
Introducción
Los archivos son unidades lógicas de información creada por los procesos. La información almacenada en los archivos debe ser persistente, es decir, no se ve afectada por la creación y terminación de los procesos. El sistema de archivos es la parte del sistema operativo que gestiona los archivos.
Para un usuario, lo más importante de un sistema de archivos son sus prestaciones:
- Cómo se nombran y protegen los archivos.
- Qué operaciones se permiten con ellos.
Detalles como el uso de listas enlazadas o mapas de bits para gestionar el almacenamiento libre, o la cantidad de sectores en un bloque de disco, son importantes para los diseñadores, pero no para los usuarios.
Estructuras de Archivos
- Secuencia de bytes sin estructura: El sistema operativo no interpreta el contenido del archivo, solo ve bytes. Cualquier significado lo asignan los programas a nivel de usuario. Tanto UNIX como Windows usan esta metodología.
- Secuencia de registros de longitud fija: Cada registro tiene una estructura interna. La operación de lectura devuelve un registro y la de escritura lo sobrescribe o agrega uno nuevo.
- Árbol de registros: Los registros pueden tener longitud variable y contienen un campo clave en una posición fija. El árbol se ordena por la clave para búsquedas rápidas. La operación principal es obtener el registro con una clave específica.
Tipos de Acceso
- Secuencial: Los valores se acceden en un orden determinado.
- Aleatorio: Se pueden leer bytes y archivos sin un orden específico, accediendo a los registros por clave y no por posición.
Operaciones con Archivos
- Create: Crea un archivo vacío, estableciendo sus atributos.
- Delete: Elimina un archivo.
- Open: Abre un archivo para su uso, cargando sus atributos y dirección en memoria.
- Close: Cierra un archivo, liberando espacio en la tabla interna y forzando la escritura del último bloque en disco.
- Read: Lee datos del archivo, generalmente desde la posición actual.
- Write: Escribe datos en el archivo, generalmente en la posición actual. Si la posición es el final, el archivo crece. Si es en medio, los datos existentes se sobrescriben.
- Append: Agrega datos al final del archivo.
- Seek: Reposiciona el puntero del archivo para acceso aleatorio.
- Get attributes: Obtiene los atributos del archivo.
- Set attributes: Modifica los atributos del archivo.
- Rename: Cambia el nombre del archivo.
Sistemas de Directorios
Directorio de un Solo Nivel
La forma más simple, donde un directorio contiene todos los archivos. El problema es que usuarios diferentes podrían usar el mismo nombre de archivo.
Directorio Jerárquico
Resuelve los conflictos de nombres entre usuarios, pero no es ideal para usuarios con muchos archivos.
Operaciones con Directorios
- Create: Crea un directorio.
- Delete: Elimina un directorio.
- Opendir: Abre un directorio para leer su contenido.
- Closedir: Cierra un directorio.
- Readdir: Devuelve la siguiente entrada de un directorio abierto.
- Rename: Cambia el nombre de un directorio.
- Link: Permite que un archivo aparezca en más de un directorio.
- Unlink: Elimina una entrada de directorio. Si el archivo solo está en ese directorio, se elimina del sistema. Si está en varios, solo se elimina la entrada especificada.