In realtà sono proprio queste: interfacce. Codificati da un numero "maggiore" e "minore", forniscono un hook al kernel.
Esistono in due versioni (beh, tre, ma le pipe denominate non rientrano nell'ambito di questa spiegazione per ora): Character Devices e Block Devices.
I dispositivi a blocchi tendono ad essere dispositivi di archiviazione, in grado di bufferizzare l'output e archiviare i dati per il successivo recupero.
I Character Character sono dispositivi come schede audio o grafiche o dispositivi di input come tastiera e mouse.
In ogni caso, quando il kernel carica il driver corretto (o all'avvio o tramite programmi come udev ) scansiona i vari bus per vedere se qualche dispositivo gestito da quel driver è effettivamente presente sul sistema. In tal caso, imposta un dispositivo che "ascolta" sul numero maggiore / minore appropriato.
(Ad esempio, il processore del segnale digitale della prima scheda audio trovata dal sistema ottiene la coppia di numeri maggiore / minore di 14/3; la seconda ottiene 14,35, ecc.)
Sta a udev creare una voce /dev
denominata dsp
come dispositivo a caratteri contrassegnato come maggiore 14 minore 3.
(Nelle versioni significativamente più vecchie o con un minimo ingombro di Linux, /dev/
potrebbe non essere caricato dinamicamente ma contenere solo tutti i possibili file di dispositivo staticamente.)
Quindi, quando un programma userspace tenta di accedere a un file contrassegnato come "file speciale di carattere" con il numero maggiore / minore appropriato (ad esempio, il tuo lettore audio che tenta di inviare l'audio digitale a /dev/dsp
), il kernel sa che questi dati devono essere trasmesso tramite il conducente al quale è assegnato il numero maggiore / minore; presumibilmente detto che il conducente sa cosa farne a sua volta.