Sistemi Operativi

Interruzioni di I/O

Ogni dispositivo di I/Oè controllato da un apposito strumento hardware detto controller. Ogni controller di dispositivo ha un suo buffer locale. La CPU sposta i dati dalla memoria centrale nei buffer locali e poi i dispositivi di I/O inseriscono o prelevano i dati dai buffer. I controller dei dispositivi di I/O informano la CPU dell’avvenuto trasferimento mediante un interrupt. Far partire l’operazione di I/O però richiede un certo tempo. Che fare nel frattempo? Una possibile scelta è di attendere la terminazione dell’ operazione (I/O sincrono). Questo metodo spreca tempo, e permette di gestire un solo interrupt di I/O alla volta. In alternativa, dopo aver inizializzato l’ operazione di I/O, la CPU passa ad eseguire altro codice senza aspettare il completamento dell’ operazione lanciata (I/O asincrono). Un segnale di interrupt segnalerà l’avvenuto completamento dell’ operazione. Il SO deve:

Se i dispositivi di I/O veloci interrompessero la CPU ad ogni byte trasferito, le interruzioni sarebbero troppo frequenti, con notevole perdita di efficienza. Si usa allora la tecnica del DMA: il dispositivo può leggere/scrivere un intero blocco di dati dal suo buffer alla memoria primaria del computer generando un interrupt solo alla fine dell’operazione. La CPU deve solo inizializzare l’operazione e gestirne la terminazione.























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.