10  Sistemas de archivos en sistemas operativos

En este primer nivel, nos centramos en qué es un archivo desde el punto de vista del usuario y de las aplicaciones, sin preocuparnos por cómo se almacena o gestiona internamente.

10.1 ¿Qué es un archivo?

Definición Fundamental

Un archivo es una colección de información relacionada, identificada por un nombre, que el sistema operativo (SO) trata como una unidad lógica de almacenamiento. Para el usuario, es una entidad coherente: un documento, una foto, una canción. El SO crea esta simple y poderosa abstracción para ocultar la complejidad del hardware de almacenamiento.

10.2 Atributos del archivo: Su “Tarjeta de identificación” 🏷️

Todo archivo posee un conjunto de metadatos (datos sobre el archivo) que lo describen. Los más importantes son:

  • Nombre: El identificador legible por humanos.
  • Identificador Interno: Un número único (ej. número de inodo) que el SO usa para rastrear el archivo. Es el identificador “oficial” para el sistema.
  • Tamaño: La cantidad de datos que contiene, medida en bytes.
  • Marcas de Tiempo: Fechas y horas de creación, última modificación y último acceso.
  • Propiedad y Permisos: Quién es el dueño del archivo y qué acciones (leer, escribir, ejecutar) se pueden realizar sobre él y por parte de quién (propietario, grupo, otros).

10.3 Estructura lógica: La visión del SO 🧱

Para el SO, casi todos los archivos tienen la misma estructura fundamental: una secuencia de bytes no estructurada.

El Sistema operativo es un gestor, no un intérprete.

El sistema no interpreta el contenido; su trabajo es gestionar esta secuencia de bytes. La responsabilidad de darle sentido (interpretarlos como texto, imagen, música, etc.) recae enteramente en la aplicación que los lee o escribe.

10.4 Interacción con el archivo: Métodos de acceso 🎯

Las aplicaciones interactúan con la secuencia de bytes de un archivo mediante un puntero de archivo que mantiene el SO, el cual indica la posición actual para la siguiente operación. Existen dos métodos de acceso principales:

  • Acceso secuencial: Se leen o escriben los bytes en orden, uno tras otro, desde el principio hasta el final. Es como leer un libro página por página o escuchar una cinta de casete.
  • Acceso aleatorio (o directo): La aplicación puede mover el puntero a cualquier posición de byte específica dentro del archivo para leer o escribir directamente allí, sin pasar por los datos anteriores. Es como saltar directamente a una canción en un CD o a un capítulo en un libro.

11 Nivel 2: El sistema de archivos (La Implementación)

Ahora que entendemos “qué” es un archivo, bajamos un nivel para ver “cómo” el sistema operativo lo organiza y almacena físicamente usando el sistema de archivos.

11.1 ¿Qué es un sistema de archivos? 🗂️

El Organizador Maestro

Un sistema de archivos (filesystem) es la estructura y el conjunto de reglas lógicas que utiliza el SO para organizar, almacenar, localizar y gestionar los archivos en un dispositivo de almacenamiento (disco duro, SSD, etc.).

11.2 Componentes fundamentales del sistema de archivos

Para lograr su tarea, todo sistema de archivos se basa en tres componentes clave que trabajan juntos:

  1. Bloques de Datos: Son las unidades físicas de tamaño fijo en las que se divide el dispositivo. El contenido real de los archivos (su secuencia de bytes) se almacena dentro de estos bloques.

  2. Inodos (Metadatos): Un inodo (nodo de índice) es una estructura de datos que almacena todos los atributos de un archivo (tamaño, permisos, fechas, propietario) y, de forma crucial, los punteros que indican en qué bloques de datos está guardado su contenido. Cada archivo tiene exactamente un inodo.

  3. Estructura de Directorios (Nombres): Un directorio es un tipo especial de archivo cuyo contenido es una tabla que mapea los nombres de archivo (legibles por humanos) a los números de inodo correspondientes.

El Flujo Completo: De Nombre a Datos

Cuando abres un archivo (ej. /home/user/doc.txt), el SO sigue estos pasos:

  1. Navegación: Recorre la estructura de directorios (/, home, user) para encontrar la entrada de doc.txt.
  2. Resolución de Inodo: Lee el número de inodo asociado a doc.txt en la tabla del directorio.
  3. Acceso a Metadatos: Con el número de inodo, localiza el inodo correspondiente en el disco.
  4. Acceso a Datos: Desde el inodo, obtiene las direcciones de los bloques de datos donde finalmente reside el contenido del archivo.

Esta separación entre nombre (directorio) y metadatos/contenido (inodo) es la clave que permite la existencia de los enlaces.


12 Nivel 3: Tipos de archivos y enlaces (Conceptos Avanzados)

Con una comprensión clara de la separación entre directorios e inodos, ahora podemos explorar los diferentes tipos de archivos y el poderoso concepto de los enlaces.

12.1 Tipos de archivos principales

  • Archivo Regular: Contiene datos del usuario (texto, binario, ejecutable).
  • Directorio: Contiene las entradas nombre -> número de inodo que organizan la jerarquía.
  • Enlace: Un puntero o referencia a otro archivo.

12.2 Enlaces: Duros y Simbólicos

Un enlace duro es una segunda entrada de directorio que apunta al mismo inodo.

  • Cómo funciona: Se crea un nuevo nombre en un directorio y se le asocia el número de inodo de un archivo ya existente. El “contador de enlaces” dentro del propio inodo se incrementa.

  • Consecuencias:

    • No hay “original” y “enlace”; ambos nombres son accesos directos e iguales al mismo contenido y metadatos.
    • Un archivo (su inodo y datos) solo se elimina del disco cuando su contador de enlaces llega a cero.
    • Limitación: No puede apuntar a directorios y no puede cruzar límites de sistemas de archivos (los inodos son locales a su filesystem).

Un enlace simbólico (o soft link) es un archivo especial que tiene su propio inodo y cuyo contenido es la ruta de acceso a otro archivo.

  • Cómo funciona: Es un simple “puntero de texto”. El SO lo lee, ve la ruta de destino y redirige cualquier operación hacia allí.

  • Consecuencias:

    • Es análogo a un “acceso directo” en Windows.
    • Puede apuntar a directorios y cruzar sistemas de archivos.
    • Fragilidad: Si el archivo original se borra o mueve, el enlace simbólico queda “roto”, apuntando a un lugar que ya no existe.

12.3 Tabla comparativa final

Característica Enlace Duro (Hard Link) 🔗 Enlace Simbólico (Soft Link) ➡️
A qué apunta Al inodo (metadatos y contenido) del archivo. A una ruta de acceso (un nombre de archivo).
Inodo Propio No, comparte el mismo inodo que el original. Sí, es un archivo separado con su propio inodo.
Si el original se borra El contenido permanece accesible si queda un enlace. Se convierte en un enlace roto.
Sistemas de Archivos No puede cruzar diferentes sistemas de archivos. Sí puede.
Analogía Un apodo o alias para la misma persona. Una nota con la dirección de una persona.