1.12 La notifica degli eventi

Esistono essenzialmente due meccanismi per mezzo dei quali un sistema può accorgersi del verificarsi di eventi particolari: il polling e l’interrupt. Il meccanismo di polling consiste nel controllare ad intervalli regolari se un certo evento si è verificato o meno. Il meccanismo di interrupt invece si basa sul fatto che è l’evento stesso a segnalare la sua occorrenza. È evidente che il meccanismo di interrupt è migliore per quanto riguarda chi attende il verificarsi dell’evento: questi viene infatti avvertito proprio in corrispondenza del verificarsi dell’evento stesso, senza che debba sprecare parte del proprio tempo nel controllare periodicamente se l’evento si sia verificato o meno. Ciò però comporta una gestione più complessa del meccanismo di supporto del sistema di notifica degli eventi.

L’interrupt viene utilizzato sia per l’hardware che per il software: un interrupt hardware è un segnale elettrico che arriva ad un dispositivo per notificare il verificarsi di un evento, mentre un interrupt software è un meccanismo di notifica dell’occorrenza di un evento particolare ad un processo, tramite meccanismi software.

Il meccanismo dell’interrupt è essenziale nell’architettura dei PC: all’interno di quest’ultimi, infatti, è presente un apposito circuito, il PIC (Programmable Interrupt Controller), che si occupa di segnalare alla CPU il verificarsi di particolari eventi, in maniera tale che la CPU stessa sospenda temporaneamente il compito che sta eseguendo per gestire l’evento che ha richiesto l’interruzione, cioè quella che in gergo viene definita IRQ (Interrupt ReQuest). Le richieste di interruzione che la CPU riceve in un arco di tempo sono svariate: basti considerare che solo il RTC genera una richiesta di interruzione ogni decimo di secondo circa.