Introduzione
Uno dei molti vantaggi del Sistema Operativo Linux è che il suo “interno” è aperto a tutti. Il kernel Linux è un corpo grande e complesso di codice. I drivers di periferica, sono distinte “scatole nere” che fanno sì che un particolare pezzo di hardware risponda ad un interfaccia di programmazione ben definita. Le attività dell’utente sono effettuate tramite una serie di chiamate standardizzate indipendenti dal driver specifico. Quindi i driver possono essere costruiti separatamente dal resto del kernel e “inseriti” a runtime quando necessario.
Ruolo dei dispositivi di periferica
Kernel Linux
I Moduli
Le Classi di dispositivie moduli
- Character devices Un dispositivo a caratteri (char) può essere letto come un flusso di byte (come un file); Ai dispositivi Char si accede per mezzo di nodi del file system. L’unica differenza rilevante tra un dispositivo char e un file normale è che si può sempre spostare avanti e indietro nel file regolare, mentre la maggior parte dei dispositivi char sono canali di dati solo, e quindi si può solo accedere in modo sequenziale. Esistono, tuttavia, i dispositivi char che sembrano aree dati, e ci si può spostare avanti e indietro.
- I dispositivi a blocchi: Un dispositivo a blocchi è un dispositivo (ad esempio, un disco) che può ospitare un filesystem. Nella maggior parte dei sistemi Unix, un dispositivo di blocco può gestire solo operazioni I / O che consentono di trasferire uno o più blocchi interi, che sono di solito 512 byte di lunghezza. Linux, invece, consente all’applicazione di leggere e scrivere un dispositivo a blocchi, come un dispositivo char e quindi permette il trasferimento di un qualsiasi numero di byte alla volta.
- Le interfacce di rete: è incaricato di inviare e ricevere pacchetti di dati, guidato dal sottosistema di rete del kernel, senza sapere come le singole operazioni mappano i pacchetti da trasmettere. Molte le connessioni di rete (in particolare quelli che utilizzano il protocollo TCP) sono stream-oriented, ma i dispositivi di rete sono, in genere, progettati intorno la trasmissione e la ricezione di pacchetti. Un driver di rete non sa nulla di singole connessioni; gestisce solo i pacchetti. Il kernel per comunicare con un driver di dispositivo di, chiama le funzioni relative alla trasmissione dei pacchetti.
- USB: il dispositivo stesso si presenta nel sistema come un dispositivo char (una porta seriale USB, per esempio), un dispositivo a blocchi (un lettore di schede di memoria USB), o un dispositivo di rete (un’interfaccia Ethernet USB)
Problemi di sicurezza
Nella distribuzione ufficiale del kernel, solo un utente autorizzato può caricare moduli; la chiamata di sistema init_module controlla se il processo chiamante è autorizzato a caricare un modulo nel kernel.
Moduli caricabili
Una delle buone caratteristiche di Linux è la possibilità di estendere in fase di esecuzione l’insieme delle funzionalità offerte dal kernel. Ciò significa che….