Diversi tipi di interruzioni e come gestirle

I primi computer richiedevano al processore di attendere il segnale prima di elaborarlo. Per determinare se ci sono segnali da analizzare, il processore deve esaminare ogni componente hardware e software del sistema. Il metodo di polling si riferisce a questa tecnica per analizzare il segnale nel sistema prima di elaborarlo. Il problema con questo metodo è che il processore deve utilizzare una quantità significativa di cicli di clock solo per controllare il segnale di sistema, rendendo il processore occupato inutilmente. A causa del processo di polling in uso, il processore impiegherà del tempo per elaborare tutti i segnali ricevuti per il processo. Di conseguenza, il tempo di risposta del sistema e le prestazioni del sistema ne risentiranno entrambi.

Per risolvere questo problema, gli ingegneri hanno sviluppato un nuovo metodo. In questo approccio, l’hardware o il software trasmetterà solo il segnale al processore per l’elaborazione anziché il processore che controlla qualsiasi segnale dall’hardware o dal software. La CPU dovrebbe interrompere il processo in corso per elaborare il segnale dall’hardware o dal software, a cui dovrebbe essere data la massima priorità. L’interrupt di sistema si riferisce a questo metodo di elaborazione del segnale.

Cos’è un’interruzione

Un segnale dall’hardware o dal software che ha la massima priorità è un interrupt e il processore dovrebbe rispondere immediatamente.

Interruzioni varie

Nonostante agli interrupt venga data la massima priorità rispetto a tutti i segnali, esistono numerosi tipi di interrupt, tuttavia i tipi più comuni sono:

Interruzioni hardware: si verificano quando la CPU riceve un segnale da un hardware o dispositivo esterno. Ad esempio, se premiamo un tasto sulla tastiera per eseguire un’azione, il segnale che viene generato e inviato al processore per eseguire l’operazione viene definito interrupt hardware. Le interruzioni hardware possono essere suddivise in due categorie:

  • Quando si è verificato un interrupt del processore con la priorità più alta, è possibile rinviare un interrupt hardware chiamato interrupt mascherabile.
  • Interrupt non mascherabile: hardware che non può essere ritardato e deve essere elaborato prontamente dal processore.

Interruzioni software: esistono due diverse forme di interruzioni software. Quelli sono:

  • Interruzioni normali: le istruzioni del software sono le interruzioni causate dal software.
  • Le interruzioni impreviste che si verificano durante l’esecuzione di un programma vengono definite eccezioni. Un’eccezione, ad esempio, si verifica quando si incontra un valore che dovrebbe essere diviso per zero durante l’esecuzione di un programma.

Classificazione degli interrupt in base alla periodicità della ricorrenza:

  1. Interruzione periodica: se si è verificata un’interruzione a un intervallo predeterminato nella sequenza temporale, tale interruzione è considerata periodica.
  2. Interruzione aperiodica: un’interruzione il cui verificarsi non può essere anticipato viene definita interruzione aperiodica.
  3. Gli interrupt sono classificati in base alla loro relazione temporale con l’orologio di sistema:
  4. Interrupt sincrono: un interrupt sincrono è un’interruzione la cui sorgente è sincronizzata con l’orologio di sistema. Oppure, interruzioni basate sull’orologio di sistema. Un servizio timer che utilizza l’orologio di sistema è un’illustrazione.
  5. Interruzioni asincrone: queste interruzioni sono denominate interruzioni asincrone se sono indipendenti o non in fase con l’orologio di sistema.
  6. Gestione degli interrupt: siamo consapevoli del fatto che le funzioni di recupero, decodifica, esecuzione e lettura/scrittura costituiscono il ciclo di istruzioni. Se non sono presenti interruzioni nel sistema, il processore procederà al successivo ciclo di istruzioni indicato dal registro delle istruzioni dopo aver verificato la presenza di interruzioni da gestire dopo ogni ciclo di istruzioni.

Quando si verifica un interrupt, viene attivato il gestore di interrupt. Il gestore arresta l’istruzione corrente che sta elaborando, salva la sua configurazione in un registro e carica il contatore di programma dell’interrupt da una posizione specificata dalla tabella del vettore di interrupt. Dopo la gestione dell’interrupt da parte del processore, il processo riprenderà da dove era stato interrotto caricando l’istruzione e la sua configurazione dal registro salvato. Il cambio di contesto è il processo di memorizzazione dell’impostazione di interrupt precedente durante il caricamento della nuova configurazione di elaborazione delle istruzioni.

Interrupt Service Routine è un altro nome per Interrupt Handler (ISR). Esistono varie classi di gestori di interrupt in grado di gestire vari interrupt. L’orologio e la tastiera di un sistema, ad esempio, dispongono entrambi di gestori di interrupt. Ogni dispositivo ha anche un gestore di interrupt.

Le caratteristiche principali dell’ISR sono:

  1. Poiché sono asincroni, le interruzioni potrebbero verificarsi in qualsiasi momento. Le interruzioni asincrone possono essere richieste tramite ISR.
  2. Più fonti possono chiamare gli ISR ​​utilizzando la tecnica del servizio di interruzione.
  3. Gli interrupt mascherabili e non mascherabili possono essere entrambi gestiti dagli ISR. Una chiamata al gestore di interrupt può essere abilitata o disabilitata da un’istruzione di programma.
  4. ISR disabiliterà altri dispositivi che potrebbero interrompere i servizi non appena inizia a funzionare. I servizi di interruzione verranno reinizializzati dopo l’esecuzione ISR.
  5. Gli interrupt annidati sono consentiti in ISR per distogliere l’attenzione su altri ISR.

Gestori di interrupt di un determinato tipo

Il gestore di interruzioni hardware o gestore di interruzioni rapide è il gestore di interruzioni di primo livello (FLIH). Questi gestori di interrupt eseguono processi con maggiore jitter e gestiscono principalmente interrupt mascherabili.

I gestori di interrupt lenti e soft fanno entrambi parte del gestore di interrupt di secondo livello (SLIH). Meno jitter è presente in questi gestori di interrupt.

Latenza di interruzione: quando si verifica un’interruzione, l’esecuzione dell’ISR potrebbe non iniziare immediatamente a causa del cambio di contesto. La latenza dell’interrupt è la quantità di tempo che intercorre tra il verificarsi di un interrupt e l’inizio dell’esecuzione dell’ISR.