Periferiche (dispositivi) e loro controllo/1

Finora abbiamo analizzato il "cuore" di un elaboratore, ossia la sua unità centrale (processore, memoria principale) e i dispositivi di memorizzazione secondaria (permanente).

Fino ad ora non abbiamo tuttavia analizzato come possa avvenire l'interazione tra l'uomo e la macchina.

Qui analizzeremo brevemente le caratteristiche dei dispositivi di input/output (anche detti "periferiche"), il cui ruolo è proprio quello di rendere possibile (e semplice) l'interazione tra l'uomo e la macchina.

Prima di analizzare in modo specifico i diversi modi e dispositivi di iterazione, è opportuno un discorso generale. Sebbene, in effetti, vi sia un notevole numero di diversi dispositivi di interazione, tutti tali dispositivi hanno delle caratteristiche funzionali comuni che giustificano il fatto che essi vengano usualmente trattati dal punto di vista funzionale come un'unica classe di componenti hardware.

La prima, ovvia, caratteristica comune a tutti i dispositivi, è che la loro funzione primaria è quella di consentire l'immissione di dati all'interno dell'elaboratore (input), o l'uscita di dati dall'elaboratore (output). In molti casi tali comunicazioni avvengono tra l'elaboratore e un utente umano (e questo sarà vero nella quasi totalità dei casi che considereremo); è tuttavia comune avere anche comunicazioni tra elaboratori e altri tipi di apparecchiature (si pensi ai computer di bordo che analizzano e gestiscono un aereo in volo e che interagiscono - in modo attivo o passivo - con la strumentazione dell'aereo o con rilevatori e attuatori situati nella meccanica dell'aereo stesso). La funzione primaria dei dispositivi è dunque quella di effettuare il passaggio di dati da una forma esterna alla forma interna usata dall'elaboratore e/o viceversa.

Una seconda caratteristica dei dispositivi di input/output è quella di avere limitata autonomia rispetto al processore centrale.

In particolare, si dice usualmente che i dispositivi sono "schiavi" del processore centrale nel senso che la loro attività deve essere completamente gestita, controllata e coordinata dal processore centrale (e, in particolare, dal sistema operativo, come vedremo in seguito).

Alcuni dispositivi sono completamente "stupidi" nel senso che non sono in grado di effettuare alcun tipo di elaborazione e gestione dei dati che producono in input o output; altri dispositivi sono più "intelligenti", essendo essi stessi dotati di un processore specializzato e di una memoria, e sono in grado di effettuare elaborazioni di tali dati.

Alla prima categoria appartiene ad esempio un terminale video (o una tastiera) il cui unico ruolo è quello di trasmettere in uscita un carattere fornito dal processore (o trasmettere in ingresso un carattere digitato dall'utente); alla seconda categoria appartengono le stampanti più sofisticate che sono in grado di mantenere in una loro memoria privata le informazioni da stampare e che sono in grado di mantenere in una loro memoria privata le informazioni da stampare e che sono in grado di fare elaborazioni finalizzate alla produzione della stampa stessa.

Indipendentemente dal fatto di essere più o meno intelligenti, una caratteristica comune a tutti i dispositivi è quella di operare in modo "asincrono" rispetto al modo di operare del processore. Consideriamo, ad esempio, un dispositivo che produce dati in input (ad esempio una tastiera). Il momento in cui il dato di input è pronto è del tutto non prevedibile da parte del processore e quindi non può in alcun modo essere controllato dal processore stesso. Allo stesso modo, il momento in cui un dispositivo in output ha terminato di produrre dati in uscita non è in alcun modo prevedibile da parte del processore. Poiché, tuttavia, deve essere il processore a gestire il funzionamento dei dispositivi e, in particolare, a inviare comandi ai dispositivi perché essi svolgano operazioni di input/output, è necessaria una qualche forma di sincronizzazione tra i dispositivi stessi e il processore. L'idea in particolare è che:

  • un dispositivo di input deve avvertire il processore quando un dato di input è disponibile in modo tale che il processore prelevi tale dato per poterlo utilizzare e ordini al dispositivo stesso di mettersi in attesa di nuovi dati in input;

  • un dispositivo di output deve avvertire il processore quando ha terminato di produrre dei dati in uscita in modo che il processore possa fornirgli un nuovo ordine per produrre altri dati in uscita.

Tali operazioni di sincronizzazione delle attività sono fondamentali nell'interazione tra processore e dispositivi. Il modo in cui la sincronizzazione viene effettuata verrà discusso più avanti come parte del sistema operativo (in realtà, infatti, i dispositivi sono gestiti dal sistema operativo più che dall'hardware del processore). Intuitivamente l'idea è che al momento in cui hanno terminato un'operazione (e quindi un dato in input è disponibile o si è terminato di produrre dati in output) i dispositivi inviano un segnale hardware (detto "interrupt" o "interruzione") al processore richiedendo l'attenzione del processore stesso. Ad ogni ciclo di clock, l'unità di controllo prima di iniziare l'esecuzione della prossima istruzione del programma in corso, va a verificare se è arrivato un segnale di interrupt da un qualche dispositivo. Se non è arrivato, prosegue normalmente; altrimenti sospende per un attimo l'esecuzione del programma in corso e si preoccupa di dar retta al dispositivo (in sostanza nel caso di un dispositivo di input preleva il dato; in ogni caso invia un nuovo ordine al dispositivo).

Un ultimo aspetto comune ai dispositivi è quello di essere collegati al processore centrale attraverso canali di comunicazione ("bus") su ognuno dei quali viene inserito (dal lato del processore) una componente hardware (il "controller") che gestisce la comunicazione con il dispositivo.

Detto di tali caratteristiche generali, possiamo analizzare in modo più preciso i diversi tipi di dispositivi di uso comune. Distingueremo tra i dispositivi di input e quelli di output e tra i dispositivi "a carattere" (in cui ad ogni operazione viene prodotto in ingresso o in uscita un singolo byte) e quelli "a blocchi" (in cui ad ogni operazione si gestisce un blocco di informazioni). Una osservazione è tuttavia ancora importante. Solitamente anche i supporti di memoria secondaria sono catalogati tra i dispositivi di input/output. In effetti, dal punto di vista della gestione, i dischi e i nastri creano gli stessi problemi degli altri dispositivi nel senso che sono schiavi del processore centrale, operano in modo asincrono e vengono gestiti dal sistema operativo mediante il meccanismo delle interruzioni.

Last updated

Was this helpful?