Qual è la differenza tra interrupt hardware e software?

L'unica differenza è come vengono attivati. Un interrupt hardware è innescato dall'hardware (tipicamente qualche periferica esterna alla CPU come un adattatore di rete, un chip audio, ecc.) mentre un interrupt software è causato dal software stesso, un po' come una chiamata di funzione.

In entrambi i casi di interrupt HW e SW, il controllo viene reindirizzato ad una routine di servizio di interrupt il cui compito è quello di intraprendere qualsiasi azione necessaria, e poi restituire il controllo al punto in cui l'interrupt ha avuto luogo. Spesso l'obiettivo della routine di interruzione è quello di fare il lavoro minimo necessario per restituire il controllo al programma precedente, rinviando azioni più complesse da gestire in seguito durante il tempo di inattività della CPU. Questo è noto come "deferred procedure call", o DPC, ed evita che gli interrupt hardware degradino le prestazioni generali del sistema in modo imprevedibile dando sempre la priorità a quegli interrupt rispetto ad altri lavori.

Nei primi giorni del PC, una varietà di controlli di sistema di basso livello era fornita dal BIOS attraverso interrupt software. Per esempio, la semplice uscita video era fornita da una serie di funzioni su int 10h, e i dischi potevano essere letti, scritti o formattati a livello di settore usando int 13h. Allo stesso modo, MS-DOS forniva servizi di sistema operativo di livello superiore come l'apertura, la creazione, la lettura e la scrittura di file su int 21H. In un certo senso, queste erano le prime API residenti in memoria, prima dell'avvento di API più complesse del sistema operativo usando le DLL in Windows o le librerie dinamiche in Linux.

C'è anche una classe di interrupt software ("eccezioni") che sono sotto il controllo della CPU ma che non sono chiamate esplicitamente dal programma in esecuzione. Esempi potrebbero essere i page fault causati dall'accesso alla memoria che è stata scambiata con una memoria esterna, o le violazioni di accesso causate dal toccare la memoria a cui il programma non è autorizzato. In questi casi, il controllo viene reindirizzato ad una routine del sistema operativo che gestisce la situazione, come il crash del programma con grazia in caso di violazione di accesso, o il caricamento di una pagina necessaria dalla memoria esterna e il ritorno al punto di un errore di pagina come se non fosse successo nulla.