UNIX, et donc Linux, reconnaît deux types de dispositifs : les périphériques
à accès direct par blocs (comme les disques), et les périphériques
caractères (comme les bandes et les liaisons séries), dont certains peuvent
être à accès direct et d'autres à accès séquentiel. Chaque périphérique
supporté est représenté dans le système de fichiers par un fichier
spécial sous /dev. Lorsqu'on lit ou écrit dans un tel fichier, les
données proviennent du, ou vont dans, le pilote logiciel du périphérique
qu'il représente. De cette façon, on n'a pas besoin de programmes spéciaux
(ni de méthodes spéciales de programmation des applications, comme
l'interception des interruptions, ou l'interrogation des ports séries)
pour accéder aux périphériques ; par exemple, pour envoyer un fichier à
l'imprimante, il suffit d'écrire :
et le contenu du fichier est imprimé (le fichier doit, bien sûr, être sous
un format reconnu par l'imprimante). Cependant, ce ne serait pas une bonne
idée de permettre à plusieurs personnes d'imprimer leurs fichiers au même
instant avec cette méthode ; pour éviter cela, on utilise généralement un
programme spécial pour imprimer les fichiers (normalement
lpr). Ce programme s'assure qu'un seul fichier sera imprimé
à la fois, et enverra automatiquement les données à l'imprimante dès qu'elle
a traité le document précédent. La plupart des périphériques utilisent une
méthode similaire. En fait, on a rarement besoin de se préoccuper des
fichiers spéciaux.
Comme les périphériques sont considérés comme des fichiers dans le système
de fichiers (dans le répertoire /dev), il est facile de voir quels
fichiers pilotes existent, en utilisant ls ou tout autre commande
adéquate3.1. Dans ce qu'affiche ls -l, la première colonne contient le
type du fichier et ses permissions. Par exemple, visualiser un pilote série
donne, sur mon système :
Le premier caractère de la première colonne, i.e. `c' dans crw-rw-rw-, indique à un utilisateur averti le type du fichier, ici un
périphérique caractère. Pour les fichiers ordinaires, ce premier caractère
est `-', pour les répertoires c'est `d', et pour les
périphériques bloc `b' ; voir la page sur ls dans le manuel en
ligne pour plus d'informations.
On notera, qu'en général, tous les fichiers pilotes existent même si le périphérique correspondant n'est pas installé. Donc, si vous avez un fichier /dev/sda, cela ne signifie pas que vous ayez un disque dur SCSI. Disposer de tous les fichiers pilotes rend les programmes d'installation plus simples, et facilite l'ajout d'un nouveau matériel (il n'y a pas besoin de rechercher les paramètres corrects pour créer les fichiers spéciaux correspondants au nouveau périphérique).