Il Sistema Operativo

Gestione delle perigeriche I/O

Per gestione delle periferiche di I/O si intendono tutte quelle funzioni di Input e di Output adibite al controllo e all'esecuzione di dispositivi di Input/Output quali mouse, stampanti, fax, tastiere, monitor, dispositivi USB etc. Un SO deve naturalmente anche "pensare" a come gestire eventuali dispositivi esterni che in futuro si aggregheranno alla macchina (come gli Hard Disk Esterni a.e.).
Il SO pertanto viene configurato in modo tale che veda tutti i dispositivi come se fossero semplici processi, e di conseguenza entità che  in grado di trattare.

Questo  un compito arduo per un SO in quanto i tutti dispositivi di I/O o processi I/O devono avere una certa precedenza rispetto agli altri, dal momento che il tempo di risposta della macchina ci si auspica, debba essere il minimo possibile (dell'ordine dei microsecondi). Il click di un mouse, la digitazione di un tasto devono essere "processi" serviti con prontezza e quindi godere di maggiore priorità rispetto a processi di altra natura. Immaginate se digitando un tasto, la macchina vi rispondesse con 20 secondi di ritardo! 



I processi I/O, pertanto sono detti on-line, nel senso che sono processi che devono rimanere in ascolto per tutta la durata del servizio della macchina . Se così non fosse, forse non useremmo né PC, né tablet, né smartphones. 

Per essere serviti in maniera veloce e senza fronzoli, i processi I/O sono quelli più vicini alla macchina fisica che gode delle hardware interrupts, ovvero delle condizioni che bloccano il processo in corso quando un processo I/O chiede l'utilizzo del processore. Attraverso questa hardware interrput, il processo viene servito in maniera immediata. Lo schema sottostante ci aiuta a capire il funzionamento di un processo I/O (vi dice niente la combinazione CTRL+ALT+CANC utilizzata spesso quando il vostro sistema Windows non risponde?).

Il Gestore I/O del SO, detto Driver, dall'inglese "pilota", si preoccupa di interfacciare il dispositivo alla macchina in modo che sia capace di interagire con esso. Il Driver, infatti, presenta il dispositivo come un "secondo" processore e trasferisce i dati dall'uno all'altro come se fossero uno solo, attraverso un'operazione detta di buffering, ovvero di posizionamento e trasferimento. Il buffering evita la perdita di dati da e verso il dispositivo.