it-swarm-es.com

¿Cuál es la diferencia entre procfs y sysfs?

¿Cuál es la diferencia entre procfs y sysfs? ¿Por qué se hacen como sistemas de archivos? Según tengo entendido, proc es solo algo para almacenar la información inmediata sobre los procesos que se ejecutan en el sistema.

74
Sen

¿Cuál es la diferencia entre procfs y sysfs?

proc es el antiguo, es más o menos sin reglas y estructura. Y en algún momento se decidió que proc era demasiado caótico y se necesitaba una nueva forma.

Luego se creó sysfs, y las nuevas cosas que se agregaron se pusieron en sysfs como información del dispositivo.

Entonces, en cierto sentido, hacen lo mismo, pero sysfs está un poco más estructurado.

¿Por qué se hacen como sistemas de archivos?

La filosofía de UNIX nos dice que todo es un "archivo", por lo tanto, se creó para que se comporte como archivos.

Según tengo entendido, proc es solo algo para almacenar la información inmediata sobre los procesos que se ejecutan en el sistema.

Esas partes siempre han estado allí y probablemente nunca se moverán a sysfs.

Pero hay más cosas viejas que puedes encontrar en proc, que no se han movido.

63
Johan

Al principio (en Unix), la forma en que los programas se enteraron de los procesos en ejecución en el sistema fue leyendo directamente las estructuras del proceso desde la memoria del núcleo (abriendo/dev/mem e interpretando los datos sin procesar directamente). Así es como funcionaron los primeros comandos 'ps'. Con el tiempo, cierta información estuvo disponible a través de llamadas al sistema.

Sin embargo, es una mala forma exponer los datos del sistema directamente al espacio del usuario a través de/dev/mem, y es desagradable crear constantemente nuevas llamadas al sistema cada vez que desea exportar algunos datos nuevos del proceso, por lo que se creó un método más nuevo para acceder a datos estructurados para aplicaciones de espacio de usuario para conocer los atributos del proceso. Este era el sistema de archivos/proc. Con/proc, las interfaces y estructuras (directorios y archivos) podrían mantenerse iguales, incluso si las estructuras de datos subyacentes en el núcleo cambiaran. Esto era mucho menos frágil que el sistema anterior, y mejoró su escala.

El sistema de archivos/proc se diseñó originalmente para publicar información del proceso y algunos atributos clave del sistema, requeridos por 'ps', 'top', 'free' y algunas otras utilidades del sistema. Sin embargo, debido a que era fácil de usar (tanto del lado del kernel como del lado del espacio del usuario), se convirtió en un vertedero para toda una gama de información del sistema. Además, comenzó a obtener archivos de lectura/escritura, para ser utilizados para ajustar la configuración y controlar el funcionamiento del núcleo o sus diversos subsistemas. Sin embargo, la metodología de implementación de las interfaces de control era ad-hoc, y/proc pronto se convirtió en un lío enredado.

El sysfs (o sistema de archivos/sys) fue diseñado para agregar estructura a este desastre y proporcionar una manera uniforme de exponer la información del sistema y los puntos de control (sistema configurable y atributos del controlador) al espacio de usuario desde el núcleo. Ahora, el marco del controlador en el núcleo crea automáticamente directorios bajo/sys cuando se registran los controladores, según el tipo de controlador y los valores en sus estructuras de datos. Esto significa que los controladores de un tipo particular tendrán todos los mismos elementos expuestos a través de sysfs.

Todavía se puede acceder a muchos de los puntos de control e información del sistema heredado en/proc, pero todos los buses y controladores nuevos deben exponer su información y puntos de control a través de sysfs.

77
Tim Bird

procfs permite arbitrario file_operations, sysfs está más restringido

sysfs es el sistema de archivos virtual creado durante el ciclo de lanzamiento del kernel 2.6 para mostrar información del dispositivo, ya que procfs no hizo bien este tipo de información.

La memoria, etc., no se ha portado a sysfs, ya que nunca tuvo la intención de mostrar ese tipo de información, por lo que es poco probable que se porte en absoluto.

3
kemra102

Como también quiero agregar aquí ... Como/proc es la versión anterior, contiene la información del dispositivo kernel de ese período de tiempo ... como sysfs vino con la versión 2.6 del kernel, por lo que la información del controlador del dispositivo crea su propio directorio por el cual está un poco estructurado y de fácil acceso.

1
gagan bajaj