Cómo funciona un sistema de archivos
En la lección anterior, gracias a los controladores, pudimos hablar con dispositivos como el disco. Pero si abres un disco, no hay archivos ni carpetas: solo casillas numeradas en filas interminables. En este mar plano de casillas, ¿cómo encuentras una sola foto tuya?
La cara real del disco: casillas numeradas
En la pantalla vemos los archivos como iconos y abrimos carpetas para encontrar dentro otras carpetas. Pero el disco en sí no tiene nada de eso.
Un disco es, en realidad, un enorme mueble de almacenamiento con casillas idénticas colocadas en fila, en orden numérico: 0, 1, 2, etcétera. Cada casilla se llama bloque.
Los bloques guardan trozos de datos, pero el disco no tiene ni idea de qué casilla pertenece a qué archivo ni de cómo se llama cada cosa. Números y datos: eso es todo.
Toca una casilla para meter datos en ella. Las casillas solo tienen números, sin nombres ni carpetas. Esta es la cara real del disco.
Las casillas solo se distinguen por su número, y sus contenidos no tienen ninguna relación entre sí. Un archivo grande no cabe en una sola casilla, y las casillas vacías están repartidas por aquí y por allá.
Así que un archivo tiene que dividirse en varias casillas, pero ¿cómo se vuelven a reunir después los trozos dispersos?
Este es el primer problema que tiene que resolver el sistema operativo.
Un archivo: una etiqueta y un mapa que unen bloques dispersos
La solución es sorprendentemente sencilla. El sistema operativo guarda una pequeña nota: «El archivo llamado foto.jpg está en las casillas 3, 7 y 12, en ese orden». Esa nota es el mapa.
Al darle un nombre, el sistema operativo abre el mapa, visita en orden las casillas dispersas y reúne los trozos.
Así que un archivo es, en realidad, la suma de dos cosas: los trozos de datos repartidos por las casillas y el mapa que los une bajo un nombre. Al hacer doble clic abrimos ese mapa; el disco solo lee las casillas a las que apunta.
Toca la etiqueta y, siguiendo el mapa, las casillas dispersas (3,7,12) se reúnen en orden para formar un solo archivo.
Un solo mapa unió las casillas dispersas en un archivo. Gracias a ello, podemos abrir un archivo por su nombre sin saber ningún número de casilla.
Pero ¿y si no hay uno o dos archivos, sino miles? Se acumulan miles de etiquetas y vuelve a ser abrumador.
Hace falta una forma de ordenar todas esas etiquetas. Ahora le toca a la carpeta.
Una carpeta: otro archivo más que guarda archivos
Una carpeta suena a algo totalmente distinto de un archivo, pero en realidad una carpeta es solo otro archivo más. Lo único especial es su contenido.
Un archivo normal guarda fotos o texto, pero una carpeta es un archivo que guarda «la lista de etiquetas de los archivos que hay dentro». Por eso abrir una carpeta significa leer esa lista para ver qué etiquetas contiene.
También se pueden meter carpetas dentro de carpetas. Entonces aparece una forma de árbol que se ramifica. Si empiezas en la raíz, arriba del todo, y bajas por las ramas, llegas al archivo que buscas.
Toca una carpeta para abrirla y ver los archivos y subcarpetas que contiene. Puedes seguir las ramas desde la raíz hasta el archivo que buscas.
Sobre el mar plano de casillas se alza ahora un árbol ordenado que se ramifica hacia arriba y hacia abajo. Como una carpeta es solo otro archivo, el sistema operativo levantó esta estructura con la misma idea de archivo, sin inventar un mecanismo nuevo.
Pero queda una pregunta: cuando borramos un archivo hecho así, ¿desaparecen de verdad sus datos del disco al instante?
Vamos a asomarnos a ese secreto en el paso siguiente.
Borrar es borrar solo el mapa
Por intuición, borrar un archivo debería eliminar sus datos del disco. Pero el sistema operativo normalmente no lo hace, porque vaciar una por una todas las casillas que tienen datos lleva mucho tiempo.
Para terminar rápido, borra solo la etiqueta y el mapa, y deja los datos de las casillas tal como están. En cambio, se limita a marcar esas casillas como «ya vacías, se pueden reutilizar».
Sin el mapa, el camino hacia esos datos queda cortado, así que a nuestros ojos el archivo parece haber desaparecido. Pero el contenido de las casillas sigue ahí.
Borra un archivo: la etiqueta y el mapa se desvanecen (el camino se corta), pero los datos de las casillas siguen en su sitio. Solo desaparecen cuando un archivo nuevo sobrescribe esas casillas.
Por eso las herramientas de recuperación a veces logran devolver un archivo borrado: basta con volver a encontrar el mapa para unir de nuevo las casillas que seguían en su sitio. En cambio, cuando un archivo nuevo sobrescribe esas casillas, los datos originales desaparecen para siempre. Los dispositivos de almacenamiento de estado sólido actuales a menudo limpian pronto las casillas liberadas, lo que hace más difícil recuperarlas.
Al final, lo esencial de borrar no era eliminar los datos, sino eliminar el mapa que lleva a ellos. Los archivos, las carpetas y el borrado se apoyan todos en una sola idea: mapas y etiquetas.
Una ilusión con forma de árbol sobre un disco plano
Demos un paso atrás para ver el conjunto. La forma real del disco eran casillas planas y numeradas. Sobre ellas, el sistema operativo hizo tres trucos de magia.
Primero, unió casillas dispersas en un solo archivo con etiquetas y mapas. Segundo, creó las carpetas, archivos que guardan otros archivos, y levantó un árbol. Tercero, al borrar, eliminó el mapa en vez de los datos.
Gracias a estos tres, podemos manejar archivos cómodamente con solo nombres y carpetas, sin conocer nunca un número de casilla.
Toca las tres tarjetas en orden para ver de un vistazo cómo se construye la ilusión: de bloques planos, a archivos unidos por etiquetas, y de ahí a un árbol de carpetas.
Igual que la memoria virtual mostraba una memoria más grande que la real, un sistema de archivos es una ilusión que presenta casillas planas como un árbol bien ordenado. La realidad es sencilla; la comodidad es lo que añade el sistema operativo.
Pero si varias personas comparten este árbol tan ordenado en una misma computadora, ¿está bien que cualquiera abra y borre los archivos de los demás? En la próxima lección hablaremos de los permisos, que mantienen el orden sobre quién puede leer, escribir y ejecutar qué.