En Unix y los sistemas operativos inspirados en él, el sistema de archivos se considera un componente central del sistema operativo. [1] También fue una de las primeras partes del sistema en ser diseñada e implementada por Ken Thompson en la primera versión experimental de Unix, fechada en 1969. [ 2]
Al igual que en otros sistemas operativos, el sistema de archivos proporciona almacenamiento y recuperación de información, y una de varias formas de comunicación entre procesos , en el sentido de que los numerosos programas pequeños que tradicionalmente forman un sistema Unix pueden almacenar información en archivos para que otros programas puedan leerlos, aunque las tuberías lo complementaron en esta función a partir de la Tercera Edición . Además, el sistema de archivos proporciona acceso a otros recursos a través de los llamados archivos de dispositivo que son puntos de entrada a terminales , impresoras y ratones .
El resto de este artículo utiliza Unix como nombre genérico para referirse tanto al sistema operativo Unix original como a sus muchos similares .
El sistema de archivos aparece como un árbol raíz de directorios. [1] En lugar de direccionar volúmenes separados, como particiones de disco , medios extraíbles y recursos compartidos de red , como árboles separados (como se hace en DOS y Windows : cada unidad tiene una letra de unidad que denota la raíz de su árbol de sistema de archivos), dichos volúmenes se pueden montar en un directorio, lo que hace que el árbol del sistema de archivos del volumen aparezca como ese directorio en el árbol más grande. [1] La raíz de todo el árbol se denota /
.
En el sistema Unix original de Bell Labs , era habitual una configuración de dos discos, en la que el primer disco contenía los programas de inicio, mientras que el segundo contenía los archivos y programas de los usuarios. Este segundo disco se montaba en el directorio vacío nombrado usr
en el primer disco, lo que hacía que los dos discos aparecieran como un solo sistema de archivos, y el contenido del segundo disco se podía ver en /usr
.
Los directorios de Unix no contienen archivos. En su lugar, contienen los nombres de los archivos emparejados con referencias a los llamados inodos , que a su vez contienen tanto el archivo como sus metadatos (propietario, permisos, hora del último acceso, etc., pero no el nombre). Múltiples nombres en el sistema de archivos pueden hacer referencia al mismo archivo, una característica denominada enlace duro . [1] Las características matemáticas de los enlaces duros hacen que el sistema de archivos sea un tipo limitado de gráfico acíclico dirigido , aunque los directorios aún forman un árbol, ya que normalmente no pueden estar enlazados de forma dura. (Como se concibió originalmente en 1969, el sistema de archivos de Unix se usaría de hecho como un gráfico general con enlaces duros a directorios que proporcionarían navegación, en lugar de nombres de ruta. [2] )
El sistema de archivos original de Unix admitía tres tipos de archivos: archivos ordinarios, directorios y "archivos especiales", también denominados archivos de dispositivo. [1] Berkeley Software Distribution (BSD) y System V añadieron cada uno un tipo de archivo para ser utilizado en la comunicación entre procesos : BSD añadió sockets , [3] mientras que System V añadió archivos FIFO .
BSD también agregó enlaces simbólicos (a menudo denominados "symlinks") a la gama de tipos de archivos, que son archivos que hacen referencia a otros archivos y complementan los enlaces duros. [3] Los enlaces simbólicos se modelaron a partir de una característica similar en Multics , [4] y difieren de los enlaces duros en que pueden abarcar sistemas de archivos y que su existencia es independiente del objeto de destino. Otros sistemas Unix pueden admitir tipos adicionales de archivos. [5]
Existen ciertas convenciones para localizar algunos tipos de archivos, como programas, archivos de configuración del sistema y directorios personales de los usuarios . Estas se documentaron por primera vez en la hier(7)
página del manual desde la versión 7 de Unix ; [6] las versiones posteriores, derivadas y clones suelen tener una página del manual similar. [7] [8] [9] [10] [11] [12]
Los detalles de la disposición de directorios han variado con el tiempo. Aunque la disposición del sistema de archivos no forma parte de la Single UNIX Specification , existen varios intentos de estandarizar (partes de) la misma, como la System V Application Binary Interface , el Intel Binary Compatibility Standard , el Common Operating System Environment y el Filesystem Hierarchy Standard (FHS) de Linux Foundation . [13]
A continuación se presenta una descripción general de las ubicaciones comunes de archivos en un sistema operativo Unix: