En informática , un sistema de archivos sintético o pseudosistema de archivos es una interfaz jerárquica para objetos que no son archivos y que aparecen como si fueran archivos normales en el árbol de un sistema de archivos basado en disco o de almacenamiento a largo plazo . Se puede acceder a estos objetos que no son archivos con las mismas llamadas del sistema o programas de utilidad que a los archivos y directorios normales . El término común para los archivos normales y los objetos que no son archivos es nodo .
La ventaja de los sistemas de archivos sintéticos es que se puede reutilizar la semántica de los sistemas de archivos conocidos para lograr un enfoque universal y de fácil implementación para la comunicación entre procesos . Los clientes pueden usar un sistema de archivos de este tipo para realizar operaciones de archivos simples en sus nodos y no tienen que implementar métodos complejos de codificación y transmisión de mensajes ni otros aspectos de la ingeniería de protocolos . Para la mayoría de las operaciones, se pueden usar utilidades de archivos comunes, por lo que incluso la creación de scripts es bastante sencilla.
Esto se conoce comúnmente como "todo es un archivo" y generalmente se considera que tiene su origen en Unix .
En el mundo Unix, normalmente hay un sistema de archivos especial montado en /proc . Este sistema de archivos se implementa dentro del núcleo y publica información sobre los procesos . Para cada proceso, hay un directorio (nombrado por el ID del proceso ), que contiene información detallada sobre el proceso: estado , archivos abiertos, mapas de memoria , montajes, etc.
/proc apareció por primera vez en Unix 8.ª Edición, [1] y su funcionalidad se amplió enormemente en Plan 9 de Bell Labs . [2]
El sistema de archivos /sys de Linux complementa a /proc, ya que proporciona una gran cantidad de información detallada (no relacionada con los procesos) sobre el estado interno del núcleo al espacio de usuario. Los sistemas Unix más tradicionales ubican esta información en las llamadas sysctl.
ObexFS es un sistema de archivos basado en FUSE que proporciona acceso a objetos OBEX a través de un sistema de archivos. Las aplicaciones pueden trabajar con objetos remotos a través del protocolo OBEX como si fueran simplemente archivos (locales).
En la familia de sistemas operativos Plan 9 de Bell Labs , se utiliza el concepto de sistema de archivos sintético 9P como método de IPC genérico . A diferencia de la mayoría de los demás sistemas operativos, el diseño de Plan 9 está muy distribuido: mientras que en otros mundos de sistemas operativos hay muchas bibliotecas y marcos (a menudo grandes) para cosas comunes, Plan 9 los encapsula en servidores de archivos. El beneficio más importante es que las aplicaciones pueden ser mucho más simples y que los servicios se ejecutan de forma independiente de la red y la plataforma: pueden residir en prácticamente cualquier host y plataforma de la red, y prácticamente en cualquier tipo de red, siempre que la aplicación pueda montar el servidor de archivos.
Plan 9 impulsa este concepto de forma expansiva: la mayoría de los servicios del sistema operativo, por ejemplo, el acceso al hardware y la pila de redes, se presentan como servidores de archivos. De esta manera, es fácil utilizar estos recursos de forma remota (por ejemplo, un host que accede directamente a los dispositivos de bloque o interfaces de red de otro host) sin la necesidad de protocolos adicionales.
También existen otras implementaciones del protocolo del sistema de archivos 9P para muchos otros sistemas y entornos. [3]
Es ampliamente conocido que la depuración de sistemas integrados o incluso de dispositivos de sistema en chip (SoC) es difícil. [ cita requerida ] Se han implementado varios protocolos para proporcionar acceso directo a dispositivos en chip, pero tienden a ser propietarios, complejos y difíciles de manejar.
Basándose en 9P , el sistema de archivos de red de Plan 9, los estudios sugieren utilizar sistemas de archivos sintéticos como esquema de acceso universal a esa información. El principal beneficio es que 9P es muy simple y, por lo tanto, bastante fácil de implementar en hardware y se puede utilizar fácilmente en prácticamente cualquier tipo de red (desde un enlace serial hasta Internet).
El principal argumento a favor del uso de sistemas de archivos sintéticos podría ser la flexibilidad y el fácil acceso a las arquitecturas orientadas a servicios . Una vez que una cantidad considerable de aplicaciones utilicen este esquema, la sobrecarga general (código, consumo de recursos, trabajo de mantenimiento) se puede reducir significativamente. Muchos argumentos generales a favor de las SOA también se aplican aquí.
Los argumentos en contra de los sistemas de archivos sintéticos incluyen el hecho de que la semántica de los sistemas de archivos puede no adaptarse a todos los escenarios de aplicación. Por ejemplo, las llamadas a procedimientos remotos complejos con muchos parámetros tienden a ser difíciles de asignar a esquemas de sistemas de archivos, [ cita requerida ] y pueden requerir un rediseño de la aplicación.