Je débute tout juste dans le développement de pilotes Linux et j'ai une question conceptuelle qui, je pense, aidera également d'autres nouveaux venus dans le développement du noyau.
Je suis en train de lire le livre Linux Device Drivers et j'ai terminé jusqu'au ch. 3 du livre. Jusqu'à présent, j'ai vu cela en émettant open
, close
et d'autres commandes aux fichiers dans /dev
dossier, l'espace utilisateur peut accéder aux fonctions du noyau.
Une autre méthode de partage de contrôle consiste à utiliser des fichiers dans /sys
, où la lecture ou l'écriture depuis sys
les fichiers peuvent communiquer avec le pilote.
Je voulais savoir quels seraient les cas d'utilisation pour chaque méthode? S'agit-il de 2 approches pour la même tâche ? L'un a-t-il des limites par rapport à l'autre ? Quelqu'un peut-il partager des exemples pratiques où l'un pourrait être utile par rapport à l'autre ?
J'ai lu les autres questions ici et elles expliquent dev
et sys
. Bien que cela soit utile, je voulais acquérir des connaissances un peu plus approfondies sur la façon dont les deux diffèrent et doivent être utilisés.
Réponse acceptée :
Très grossièrement :
/dev
contient des nœuds de périphériques, ce qui dans les systèmes Unix antérieurs était le seul moyen d'interagir avec le noyau. Il en existe deux types, bloquer appareils et personnage dispositifs. L'API correspondante est adaptée à quelque chose qui permettra des E/S basées sur des blocs (un certain type de disque) ou des E/S basées sur des caractères (par exemple, un port série).
/sys
(et /proc
) ont été ajoutés plus tard, peut-être inspirés par le système d'exploitation Plan 9. Ils fournissent des sous-arborescences de répertoires complètes et les entrées de fichier dans ces sous-arborescences contiennent du texte qui décrit l'état interne du module du noyau lorsqu'il est lu ou, lorsqu'il est écrit, définit l'état interne.
Ainsi, une application typique serait :
Vous voulez écrire un pilote de noyau pour un type de périphérique de stockage ? Utiliser un /dev
node pour accéder au périphérique lui-même, et /sys
(ou /proc
) pour affiner la façon dont le stockage est accessible.