web-dev-qa-db-fra.com

Quelle est la différence entre procfs et sysfs?

Quelle est la différence entre procfs et sysfs? Pourquoi sont-ils créés en tant que systèmes de fichiers? Si je comprends bien, proc est juste quelque chose pour stocker les informations immédiates concernant les processus en cours d'exécution dans le système.

74
Sen

Quelle est la différence entre procfs et sysfs?

proc est l'ancien, il est plus ou moins sans règles ni structure. Et à un moment donné, il a été décidé que proc était un peu trop chaotique et qu'une nouvelle voie était nécessaire.

Ensuite, sysfs a été créé et les nouveaux éléments ajoutés ont été placés dans sysfs comme des informations sur l'appareil.

Donc, dans un certain sens, ils font de même, mais sysfs est un peu plus structuré.

Pourquoi sont-ils créés en tant que systèmes de fichiers?

La philosophie UNIX nous dit que tout est un "fichier", donc il a été créé pour qu'il se comporte comme des fichiers.

Si je comprends bien, proc est juste quelque chose pour stocker les informations immédiates concernant les processus en cours d'exécution dans le système.

Ces parties ont toujours été là et ne bougeront probablement jamais dans sysfs.

Mais il y a plus de vieux trucs que vous pouvez trouver dans proc, qui n'ont pas été déplacés.

63
Johan

Au début (depuis Unix), la façon dont les programmes ont découvert les processus en cours d'exécution sur le système était via la lecture directe des structures de processus à partir de la mémoire du noyau (ouverture/dev/mem et interprétation directe des données brutes). C'est ainsi que les toutes premières commandes "ps" ont fonctionné. Au fil du temps, certaines informations ont été mises à disposition via des appels système.

Cependant, c'est une mauvaise forme d'exposer les données système directement à l'espace utilisateur via/dev/mem, et il est odieux de créer constamment de nouveaux appels système chaque fois que vous souhaitez exporter de nouvelles données de processus, et donc une nouvelle méthode a été créée pour accéder à des données structurées pour les applications de l'espace utilisateur pour en savoir plus sur les attributs de processus. C'était le système de fichiers/proc. Avec/proc, les interfaces et les structures (répertoires et fichiers) pouvaient rester les mêmes, même si les structures de données sous-jacentes du noyau changeaient. C'était beaucoup moins fragile que le système précédent, et il évoluait mieux.

Le système de fichiers/proc a été initialement conçu pour publier des informations sur les processus et quelques attributs clés du système, requis par "ps", "top", "free" et quelques autres utilitaires système. Cependant, parce qu'il était facile à utiliser (à la fois du côté du noyau et du côté de l'espace utilisateur), il est devenu un dépotoir pour toute une gamme d'informations système. De plus, il a commencé à gagner des fichiers en lecture/écriture, à utiliser pour ajuster les paramètres et contrôler le fonctionnement du noyau ou de ses différents sous-systèmes. Cependant, la méthodologie de mise en œuvre des interfaces de contrôle était ad hoc, et/proc est rapidement devenu un gâchis enchevêtré.

Le sysfs (ou le système de fichiers/sys) a été conçu pour ajouter une structure à ce désordre et fournir un moyen uniforme d'exposer les informations système et les points de contrôle (système réglable et attributs de pilote) à l'espace utilisateur à partir du noyau. Maintenant, le framework de pilotes dans le noyau crée automatiquement des répertoires sous/sys lorsque les pilotes sont enregistrés, en fonction du type de pilote et des valeurs dans leurs structures de données. Cela signifie que les pilotes d'un type particulier auront tous les mêmes éléments exposés via sysfs.

De nombreuses informations système et points de contrôle hérités sont toujours accessibles dans/proc, mais tous les nouveaux bus et pilotes doivent exposer leurs informations et points de contrôle via sysfs.

77
Tim Bird

procfs autorise file_operations arbitraire, sysfs est plus restreint

sysfs est le système de fichiers virtuel créé pendant le cycle de publication du noyau 2.6 pour afficher les informations sur le périphérique, car procfs n'a pas si bien fait ce type d'informations.

La mémoire, etc. n'a pas été transférée vers sysfs car elle n'a jamais été conçue pour afficher ce type d'informations, il est donc peu probable qu'elle le soit.

3
kemra102

Comme je veux aussi ajouter ici ... Comme/proc est l'ancienne version, il contient les informations du périphérique noyau de cette période .. comme sysfs est venu avec la version 2.6 du noyau, les informations sur le pilote du périphérique font leur propre répertoire par lequel il est un peu structuré et facile d'accès ..

1
gagan bajaj