Video
Controllo di programma diretto
- CPU master e Periferica slave
- CPU si occupa del controllo e del trasferimento dei dati
- CPU comunica al controller l'esecuzione dell' I/O
- si ferma e interroga il registro di stato della periferica
- attende che il ready bit assuma un determinato valore
- VANTAGGI: risposta veloce al ready bit, bassa latenza
- SVANTAGGI: CPU in busy waiting/spin lock. Periferiche lente portano a spreco di risorse

Controllo di programma con Polling
- interrogazione ciclica dello stato di tutte le periferiche
- Esempio di funzionamento del polling
while(1){
status = getPerifericaStatus();
if (status == "busy waiting"){
eseguiPolling(altre_periferiche)
} else {
soddisfaRichiesta();
continue;
}
}
- VANTAGGI: No spin lock/busy waiting
- SVANTAGGI: Durata maggiore (circa 400 CC ), Periferiche lente portano a spreco di risorse
Interruzione
- Interruzione normale funzionamento del processore
- la periferica segnala alla CPU di aver bisogno di attenzione mediante un apposito segnale nel bus di controllo
- funziomamento:
- La periferica avvisa il processore → interrupt request
- il processore se ne accorge → interrupt acknowledge
- il processore si ferma ed esegue la procedura di risposta
- il processore riprende l'esecuzione del programma interrotto
- → viene salvato il contesto

- gli interrupt vengono gestiti in maniera gerarchica come gia discusso qua:
Gestione di interrupt multipli