Articulo de referencia

Directorio (informática)

Captura de pantalla de una ventana del símbolo del sistema de Microsoft Windows que muestra una lista de directorios. En informática , un directorio es una estructura de catalog...

Captura de pantalla de una ventana del símbolo del sistema de Microsoft Windows que muestra una lista de directorios.

En informática , un directorio es una estructura de catalogación del sistema de archivos que contiene referencias a otros archivos informáticos y, posiblemente, a otros directorios. En muchos ordenadores, los directorios se conocen como carpetas o cajones , [ 1 ] de forma análoga a un banco de trabajo o al archivador de oficina tradicional . El nombre deriva de libros como la guía telefónica , que enumera los números de teléfono de todas las personas que viven en una zona determinada.

Los archivos se organizan almacenando archivos relacionados en el mismo directorio. En un sistema de archivos jerárquico (es decir, uno en el que los archivos y directorios se organizan de forma similar a un árbol ), un directorio contenido dentro de otro se denomina subdirectorio . Los términos "padre" e "hijo" se utilizan a menudo para describir la relación entre un subdirectorio y el directorio en el que se encuentra, siendo este último el padre. El directorio de nivel superior en dicho sistema de archivos, que no tiene un padre propio, se denomina directorio raíz .

El tipo de medio freedesktop.org para directorios dentro de muchos sistemas tipo Unix  , incluidos, pero no limitados a, sistemas que usan GNOME , KDE Plasma 5 o ROX Desktop como entorno de escritorio  , es "inode/directory". [ 2 ] Este no es un tipo de medio registrado por IANA .

Descripción general

Diagrama de un árbol de directorios jerárquico. El directorio raíz se denomina aquí "MFD" (Directorio Maestro de Archivos). Normalmente, un archivo solo puede estar en un directorio a la vez, pero en este caso el Archivo 2 está enlazado de forma permanente, por lo que aparece en dos directorios.

Históricamente, e incluso en algunos sistemas embebidos modernos , los sistemas de archivos no admitían directorios o solo tenían una estructura de directorios plana , lo que significa que no admitían subdirectorios; solo existía un grupo de directorios de nivel superior, cada uno con archivos. En los sistemas modernos, un directorio puede contener una combinación de archivos y subdirectorios.

Una referencia a una ubicación en un sistema de directorios se denomina ruta .

En muchos sistemas operativos , los programas tienen un directorio de trabajo asociado donde se ejecutan. Normalmente, se asume que los archivos a los que accede el programa se encuentran dentro de este directorio si no se especifica explícitamente el nombre del directorio.

Algunos sistemas operativos restringen el acceso de un usuario únicamente a su directorio personal o de proyecto, aislando así sus actividades de las de los demás usuarios. En las primeras versiones de Unix, el directorio raíz era el directorio personal del usuario root , pero en las versiones modernas de Unix se suele utilizar otro directorio, como /root, para este fin.

De acuerdo con la filosofía de Unix , los sistemas Unix tratan los directorios como un tipo de archivo. [ 3 ] Las limitaciones incluyen la imposibilidad de escribir en un archivo de directorio excepto indirectamente mediante la creación, el cambio de nombre y la eliminación de objetos del sistema de archivos en el directorio, y la única posibilidad de leer un archivo de directorio mediante rutinas de biblioteca específicas para directorios y llamadas al sistema que devuelven registros, no una secuencia de bytes. [ 4 ]

metáfora de carpeta

Icono de carpeta de muestra (de KDE ).

El nombre carpeta , que presenta una analogía con la carpeta de archivos utilizada en las oficinas, y que se utilizó en un diseño de sistema de archivos jerárquico para la Electronic Recording Machine, Accounting (ERMA) Mark 1 publicada en 1958 [ 5 ] , así como por Xerox Star , [ 6 ] se utiliza en los entornos de escritorio de casi todos los sistemas operativos modernos . Las carpetas suelen representarse con iconos que se asemejan visualmente a las carpetas de archivos físicas.

Existe una diferencia entre un directorio , que es un concepto del sistema de archivos , y la metáfora de la interfaz gráfica de usuario que se utiliza para representarlo (una carpeta ). Por ejemplo, Microsoft Windows utiliza el concepto de carpetas especiales para presentar el contenido del equipo al usuario de forma bastante consistente, lo que le evita tener que lidiar con rutas de directorio absolutas, que pueden variar entre versiones de Windows y entre instalaciones individuales. Muchos sistemas operativos también cuentan con el concepto de "carpetas inteligentes" o carpetas virtuales que reflejan los resultados de una búsqueda en el sistema de archivos u otra operación. Estas carpetas no representan un directorio en la jerarquía de archivos. Muchos clientes de correo electrónico permiten crear carpetas para organizar el correo. Estas carpetas no tienen una representación correspondiente en la estructura del sistema de archivos.

Si nos referimos a un contenedor de documentos , el término carpeta es más apropiado. El término directorio se refiere a la forma en que se almacena en el ordenador una lista estructurada de archivos y carpetas de documentos. La distinción puede deberse a la forma en que se accede a un directorio; en los sistemas Unix, /usr/bin/ se suele denominar directorio cuando se visualiza en una consola de línea de comandos , pero si se accede a través de un gestor de archivos gráfico , los usuarios a veces pueden llamarlo carpeta.

Caché de búsqueda

Los sistemas operativos que admiten sistemas de archivos jerárquicos implementan una forma de almacenamiento en caché en la RAM para acelerar la resolución de rutas de archivo. Este mecanismo reduce la sobrecarga asociada con el recorrido repetido de las jerarquías del sistema de archivos para resolver nombres de ruta en referencias de inodos .

En sistemas tipo Unix , esto puede denominarse caché de búsqueda de nombres de directorio (DNLC), caché de entrada de directorio o dcache . [ 7 ] [ 8 ]

Descripción general

Las cachés de búsqueda de directorios almacenan asignaciones entre componentes de rutas absolutas o relativas (como `/usr/bin`) y sus correspondientes objetos de entrada de inodo o directorio. Esto permite que el sistema evite recorrer la ruta completa para acceder a archivos o directorios frecuentes, lo que mejora drásticamente el rendimiento en cargas de trabajo con operaciones de metadatos complejas.

La caché se implementa normalmente utilizando estructuras de búsqueda rápida, como tablas hash o árboles de radix, y puede utilizar algoritmos de envejecimiento, como LRU, para la eliminación de elementos de la caché.

Antecedentes históricos

SunOS introdujo una caché de búsqueda como parte de la implementación de NFS ; [ 7 ] sin embargo, no solo fue utilizada por NFS. Desde entonces, ha sido adaptada y ampliada en sistemas como Linux, BSD, Solaris y macOS.

Implementaciones

Windows

Windows utiliza mecanismos internos de almacenamiento en caché de rutas como parte de sus capas de administrador de objetos NTFS y del núcleo, aunque estos no siempre están expuestos directamente.

Variantes de BSD

Las variantes de BSD, incluidas FreeBSD , NetBSD , [ 9 ] OpenBSD , [ 10 ] y DragonFly BSD, implementan cachés de búsqueda de directorios.

macOS

macOS integra el almacenamiento en caché de búsqueda en su capa VFS. [ 11 ]

Linux

La capa del sistema de archivos virtual (VFS) del kernel de Linux utiliza una estructura llamada dcache para almacenar en caché los objetos de entrada de directorio (eliminar) . Cada entrada de directorio se vincula a un inodo y puede representar un archivo o un subdirectorio. Estas entradas de directorio se organizan en una estructura de árbol que refleja la jerarquía de directorios y se almacenan en memoria siempre que no haya problemas de memoria.

Además de acelerar la búsqueda de archivos, la caché de datos (dcache) también desempeña un papel importante en el mantenimiento de la coherencia entre los sistemas de archivos montados, incluidas las configuraciones complejas con superposiciones o montajes de enlace.

Coherencia de caché en sistemas de archivos distribuidos

En sistemas de archivos distribuidos como NFS o AFS , la caché debe mantenerse coherente entre múltiples clientes. En estos sistemas, un cambio realizado en un cliente debe reflejarse en las cachés de búsqueda de los demás clientes. Para lograr esto, los sistemas de archivos de red utilizan diversos mecanismos:

  • Tiempos de espera de atributos
  • Bloqueo basado en arrendamientos (por ejemplo, delegaciones NFSv4 )
  • Invalidaciones de devolución de llamada (por ejemplo, AFS)

Si no se garantiza la coherencia, los metadatos de los archivos pueden quedar obsoletos o la resolución de rutas puede ser incorrecta, lo que puede provocar errores en la aplicación o pérdida de datos.

Impacto en el desempeño

Las cachés de búsqueda de directorios optimizadas pueden reducir significativamente la latencia de las llamadas al sistema para operaciones de archivos como `open()`, `stat()` y `execve()`. En pruebas de rendimiento, los sistemas con un almacenamiento en caché de directorios agresivo han demostrado mejoras de varios órdenes de magnitud en los tiempos de acceso para grandes bases de código y en los tiempos de arranque del sistema.

Véase también

Caché de búsqueda relacionada
Estructura del sistema de archivos
conceptos de sistemas operativos
Comandos comunes

Referencias

  1. "Capítulo 1: Tutorial". Uso de AMIGA Workbench . Commodore-Amiga. Julio de 1991. pág.  46. La ruta especifica el nombre o la ubicación del disco y todas las carpetas que conducen al archivo especificado.
  2. Leonard, Thomas (2018-10-02). "Base de datos compartida de información MIME" . Grupo de escritorio X. Archivos no regulares . Recuperado el 13 de marzo de 2023 .
  3. "Todo es un archivo" . Asociación de Genética del Comportamiento . c. 2002. Archivado del original el 10 de marzo de 2012. Recuperado el 30 de abril de 2021 .
  4. "readdir(3) — Página del manual de Linux" . El proyecto de páginas del manual de Linux. 22 de marzo de 2021. Consultado el 27 de noviembre de 2022 .
  5. Barnard III, GA; Fein, L. (1958). "Organización y recuperación de registros generados en un proyecto de ingeniería a gran escala" . Taller internacional sobre gestión del conocimiento de requisitos . Filadelfia, PA, EE. UU. pp. 59–63 . doi : 10.1109/AFIPS.1958.75 . 
  6. ""Interfaz de usuario de Xerox Star (1982)"" . YouTube . 28 de agosto de 2009. Archivado del original el 21 de diciembre de 2021 . Consultado el 19 de noviembre de 2014 .
  7. 1 2 Russel Sandberg; David Goldberg; Steve Kleiman; Dan Walsh; Bob Lyon. Diseño e implementación del sistema de archivos de red Sun (PDF) . Conferencia y exposición USENIX de verano de 1985. Portland, Oregón, EE. UU.
  8. "Consistencia de caché de cierre a apertura en el cliente NFS de Linux" . Centro para la Integración de Tecnologías de la Información, Universidad de Michigan . Consultado el 19 de noviembre de 2014 .
  9. Manual del desarrollador del kernel de NetBSDnamecache(9)  
  10. Manual del desarrollador del kernel de OpenBSDvfs_cache(9)  
  11. "cache_lookup" . Desarrollador de Apple .
  • Definición de directorio según el Proyecto de Información de Linux (LINFO).