TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Udev svelato: gestione periferiche senza segreti
Alla scoperta dell’infrastruttura che permette al sistema operativo di interfacciarsi con l’hardware del PC e come utilizzarlo al meglio delle sue possibilità
(pagina 1 di 6)
GNU/Linux gestisce i dispositivi hardware mediante segmenti di codice chiamati device driver. Si dice che una tale periferica è supportata se nel kernel Linux esiste il corrispettivo device driver. Questi permettono all’utente e agli altri programmi di fruire dei dispositivi considerandoli alla stregua dei file (ricordate l’affermazione secondo cui “in Unix tutto è un file”?) e, in particolare, utilizzando quelli speciali, i cosiddetti file di dispositivo, situati nella directory /dev. Questo significa che la comunicazione con le periferiche può essere pensata come “semplice” input e output (diciamo pure scrittura e lettura) di dati secondo il tradizionale concetto di file. Ad esempio, si ottiene la scansione di un documento leggendo da un file speciale mentre per mandare in stampa un documento si scriverà il suo contenuto su un altro di questi file: spetta ai device driver dello scanner e della stampante tradurre queste letture e scritture in operazioni a livello di hardware.
Più in profondità
Sui file speciali si devono poter effettuare le tipiche operazioni ,quali ad esempio l’apertura, la lettura, la scrittura e la chiusura. Come già accennato sono i device driver che rendono possibili queste e altre operazioni per la gestione delle periferiche. Il sistema operativo deve quindi sapere a quale device driver fare riferimento per eseguire tali operazioni sul relativo file speciale. Ecco il motivo per cui i file speciali sono caratterizzati da un major e un minor number. Il primo individua la corretta routine per la gestione del tipo di periferica mentre il secondo delinea con maggior precisione e dettaglio le caratteristiche della periferica. Ad esempio il file speciale /dev/hda6 è caratterizzato da un major number uguale a 3 e un minor number uguale a 6 e questo indica al kernel di utilizzare il device driver per i dischi IDE per gestire la partizione 6 del disco. Se il driver per la gestione della periferica non esiste, o non è stato caricato all’interno del kernel la periferica non sarà supportata e il file speciale che la rappresenta non sarà accessibile.
Il passaggio da /dev a devfs

• Il file system /dev. Grazie a udev contiene solo “684” file di dispositivo e non 18.000

Esistono molti tipi di periferiche con relative interfacce rappresentate dai file speciali. Ad esempio, troviamo i block device e i character device. Nel primo caso è possibile l’accesso casuale dei dati che invece non ha senso nel secondo. Inoltre, non sempre ad ogni file speciale corrisponde un dispositivo fisico vero e proprio; talvolta dietro a un file speciale c’è un programma che simula una periferica ad esempio un generatore di numeri casuali. Questi dispositivi vengono chiamati pseudo-device. La directory /dev, che ospita i file speciali secondo gli standard stabiliti dalla Filesystem Hierarchy Standard, in origine è stata concepita come statica, cioè con un numero predefinito di file di dispositivo; se fosse ancora così, oggi conterebbe più di 18.000 file, ognuno dei  quali con il proprio major e minor number, poiché dovrebbe poter “rappresentare” tutte le possibili periferiche esistenti. Per risolvere il problema dell’elevato numero dei file presenti all’interno di /dev, dalla versione 2.3.46 del kernel Linux è stata introdotta una infrastruttura più evoluta chiamata devfs, che replica /dev su file system virtuale, ma in questo caso ospita solo i file speciali relativi alle sole periferiche in quel momento collegate al PC. Ma anche devfs ha i propri limiti come, ad esempio, l’impossibilità da parte dell’utente di creare e dare nomi personalizzati ai file di dispositivo. Per risolvere questo ulteriore inconveniente è stato creato udev, il rivoluzionario sistema ideato da Greg Kroah- Hartman. Prima di iniziare ad analizzarlo in dettaglio è doveroso accennare al fatto che sebbene devfs sia ormai un’opzione abbandonata del kernel Linux in favore di udev, sussistono ancora divergenze sull’argomento. Per i dettagli http://kernel.org/pub/ linux/utils/kernel/hotplug/udev_vs_devfs.
Cos’è il LANANA
 Assegna major e minor number
 Il LANANA o Linux Assigned Names and Numbers Authority è l’ente che stabilisce i nomi e i major e minor number da assegnare ai device utilizzati nel kernel Linux.
Pagina 1/6
Lascia un commento
Tag: Udev, gestione periferiche, device driver
Condividi