Un interruzione è un evento "insolito" che deve essere elaborato immediatamente , indipendentemente da qualsiasi altra cosa stia succedendo. Dico "insolito" tra virgolette, perché non sono necessariamente inattesi o cattivi, ma "insoliti" dal punto di vista della CPU perché "accadono" mentre è impegnato a eseguire codice che potrebbe non essere correlato.
La CPU ha un meccanismo per ascoltare gli interrupt e un modo per configurare "cosa fare" quando si verificano interruzioni di vario tipo. Ciò consente al sistema operativo di organizzare la notifica quando i dispositivi hardware eseguono le operazioni (incluso l'orologio hardware di importanza fondamentale, che genera semplicemente interruzioni a intervalli regolari). Attraverso la configurazione della gestione degli interrupt della CPU, il codice designato nel sistema operativo acquisirà il controllo ogni volta che si verificano interruzioni.
Il computer è in uno stato molto spiacevole (per un programmatore dell'applicazione) quando un gestore di interrupt inizia a funzionare; la macchina era impegnata a fare qualcos'altro (che poteva essere qualsiasi cosa ) e ora il sistema operativo è stato informato che "è successo qualcosa". Deve raccogliere qualsiasi altra informazione necessaria per gestire effettivamente l'interrupt da qualsiasi punto della macchina in cui dovrebbe trovarsi e fare qualunque elaborazione sia richiesta senza disturbare il fatto che "potrebbe essere qualsiasi cosa" in esecuzione sulla CPU. Se il sistema operativo vuole cambiare quale processo dell'applicazione è attualmente in esecuzione, dovrà salvare abbastanza contesto per poterlo ripristinare in un secondo momento (di nuovo, senza disturbare quel contesto), quindi caricare qualche altro contesto e quindi lasciare che la CPU riprenda normale esecuzione in quel contesto.
Come accennato, gli interrupt vengono utilizzati per ottenere notifiche dai dispositivi hardware (l'unica alternativa sarebbe quella di controllarli periodicamente), tenere traccia del tempo e ottenere l'opportunità garantita di riprendere il controllo da un processo dell'applicazione (al fine di cambiare quale applicazione è in esecuzione) , ripristinando dai processi dell'applicazione eseguendo istruzioni non valide e anche per consentire alle applicazioni di effettuare richieste al sistema operativo. Questi ultimi sono noti come chiamate di sistema. Per impedire alle applicazioni di incasinare la macchina e le une con le altre, in genere vengono eseguite con la macchina in "modalità utente", il che impedisce all'applicazione di fare praticamente qualsiasi cosa diversa dalla lettura e scrittura di memoria (virtuale) già assegnata ad essa. Ciò significa che fare qualsiasi cosaaltrimenti (lettura / scrittura di file, richiesta di più memoria, accesso ai dispositivi, ecc.) l'applicazione deve effettuare una chiamata di sistema; lo fa fondamentalmente lasciando alcune informazioni su ciò che vuole fare da qualche parte sa che il sistema operativo lo cercherà, quindi eseguendo un'istruzione CPU che provoca un interruzione del tipo giusto. Il sistema operativo può quindi vedere cosa stava cercando di fare l'applicazione e determinare se doveva eseguire quella richiesta. Questa garanzia che il sistema operativo sarà coinvolto nel tentativo di qualsiasi processo di fare qualcosa che influisce su qualsiasi cosa al di fuori del processo è l'unico modo in cui i criteri di accesso possono essere applicati.
Quindi essenzialmente, sì, il sistema operativo è guidato da interrupt. Un sistema operativo "astratto" avvia la macchina in uno stato di "funzionamento normale" e ad un certo punto passa il controllo a un processo "normale". In circostanze normali, il sistema operativo riacquisterà il controllo solo gestendo gli interrupt; ma poiché praticamente nulla di interessante accade senza un interruzione, il sistema operativo in pratica ha il controllo di tutto tutto il tempo.