prof. Nunzio Brugaletta | Programmazione e linguaggio C |
Le periferiche disponibili in un sistema di elaborazione sono, dal punto di vista hardware, anche molto diverse fra di loro anche se dal punto di vista dell’utente le funzioni che svolgono possono essere assimilabili. Si pensi, per esempio, alle differenze sostanziali fra una stampante a getto di inchiostro e una laser: dal punto di vista dell’utente si tratta in tutte e due i casi di una stampante (una periferica che produce un output su supporto cartaceo), dal punto di vista hardware si tratta di due cose distinte almeno quanto lo potrebbero essere, per esempio, una stampante a getto di inchiostro e una tastiera.
Il sistema operativo fornisce un’interfaccia ad alto livello verso l’hardware: le periferiche sono mappate in memoria, è utilizzata cioè in pratica una parte della memoria centrale (il buffer) come deposito temporaneo dei dati da e verso le periferiche. In questo modo, per esempio, le operazioni di input possono essere effettuate sempre allo stesso modo a prescindere dalla periferica: sarà il sistema che si occuperà della gestione della specificità dell’hardware. Il sistema di I/O fornisce il concetto astratto di canale (lo stream). Con tale termine si intende un dispositivo logico indipendente dalla periferica fisica: chi scrive il programma si dovrà occupare dei dati che transitano per il canale prescindendo dalle specifiche del dispositivo fisico che sta usando (un lettore di dischi magnetici, una stampante). Il termine file si riferisce invece ad una astrazione che è applicata a qualsiasi tipo di dispositivo fisico. In poche parole, si potrebbe affermare che il file rappresenta il modo attraverso il quale l’utilizzatore vede sistemati i dati sul dispositivo di I/O, e che il canale è il modo con cui i dati sono accessibili per l’utilizzazione.
Un canale è associato ad un file per mezzo di una open (apertura del file), a questo punto i dati presenti nel file sono accessibili per l’utilizzo. L’associazione fra canale e file è eliminata per mezzo di una close che interrompe le comunicazioni. Se il canale è stato aperto per operazioni di output, la chiusura consente di scrivere sul dispositivo fisico i dati ancora presenti nel buffer (lo svuotamento del canale). In questo modo si evita che una parte dei dati possa non essere registrata.
L’associazione di canali alla tastiera per l’input e al video per l’output è curata in automatico dal sistema operativo per consentire il dialogo con il sistema. La tastiera e il video sono cioè le periferiche di default: il sistema è già connesso con esse. Per quanto riguarda invece le comunicazioni con altre periferiche è necessario esplicitare l’associazione di canali per tali comunicazioni.
http://ennebi.solira.org | ennebi@solira.org |