GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Quand utiliser /dev et /sys pour la communication espace utilisateur-noyau ?

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.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Quand utiliser /dev/random contre /dev/urandom ?

  3. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  4. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  5. Comment puis-je modifier la quantité et la taille des disques RAM Linux (/dev/ram0 - /dev/ram15) ?

Quelle est la portabilité de /dev/stdin, /dev/stdout et /dev/stderr ?

Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

Que sont les fichiers /dev/zero et /dev/null sous Linux

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

noyau :désactiver /dev/kmem et /dev/mem

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?