back

In questo modo il Sistema Operativo è in grado di operare i provvedimenti corretti al presentarsi di un qualsiasi evento. In un'area specifica (protetta) della memoria sono salvate le istruzioni da eseguire (Interrupt Service Routine) per ogni relativo segnale; all'arrivo di un' interrupt la CPU interrompe il task in esecuzione ponendolo temporaneamente in memoria, dopodichè interpreta il segnale ed esegue le operazioni necessarie. Terminata la procedura di interrupt handling il controllo del processore viene restituito al task sospeso precedentemente.

Ecco un esempio di espansione delle capacità di un sistema, da un dispositivo in grado di eseguire semplici calcoli e di ricevere segnali dall'esterno otteniamo un'entità in grado di prendere diverse decisioni. In questo modo si aumentano le potenzialità di uno strumento senza intervenire sulla sua struttura.

Ovviamente non è tutto oro quello che luccica. Questo meccanismo introduce parecchie difficoltà: innanzitutto occorre assegnare a ciascun segnale un'azione da eseguire e questo insieme di routine va protetto dall'accesso dell'utente per evitare malfunzionamenti dovuti a errate sovrascritture delle procedure.
All'arrivo di un' interrupt occorre operare un cambio di contesto, ovvero salvare i dati del processo in esecuzione in una locazione temporanea di memoria e caricare nella CPU dati e istruzioni relative al segnale ricevuto. Questo introduce un overhead non indifferente altresì noto come latenza di interrupt (tempo che intercorre dall'arrivo dell' interrupt all'esecuzione dell'azione ad essa legata).
Infine cosa accadrebbe se durante l'esecuzione di una Interrupt Service Routine arrivasse un'altra interrupt? Le interrupt possono interrompere qualsiasi task in esecuzione? Vi sono processi che hanno una relativa importanza come ad esempio la schedulazione del processore. Non tutti questi processi possono essere interrotti; occorre perciò inibire la gestione delle interrupt in alcune occasioni. Questo implica che dobbiamo operare in due modalità differenti: una in grado di accettare le interrupt e l'altra "sorda" per quanto riguarda questo aspetto.

Protezione dei dispositivi

Quando lavorate al PC non siete soli; un silenzioso compagno lavora assieme a voi sulla stessa macchina svolgendo un compito ben preciso: permetterne il corretto funzionamento.
Utente e Sistema Operativo svolgono mansioni del tutto differenti sullo stesso calcolatore; è quindi necessario operare una distinzione fra il codice eseguito da un'entità e quello eseguito dall'altra.

Alcune operazioni svolte dal Sistema Operativo hanno la necessità di non essere interrotte; per fare un esempio vediamo rapidamente la schedulazione di un processore. Unix è un ambiente multiprogrammato, ovvero è in grado di eseguire più task in parallelo dando l'impressione all'utente di poter eseguire più operazioni contemporaneamente; lo scheduler del processore è uno degli strumenti che implementano questa peculiarità: esso esamina ciclicamente i processi in attesa della risorsa "tempo processore" e in base a diversi criteri, la assegna ad uno di essi.

back