Cosa si intende per interrupt nel contesto dei sistemi operativi?


9

Ho deciso di leggere i concetti dei sistemi operativi di Silberschatz, Galvin Gagne (ottava edizione) durante l'estate. Sono arrivato a un argomento che mi confonde: gli interrupt e il loro ruolo in relazione ai sistemi operativi.

Il testo dice che un sistema operativo inizierà un primo processo come "init" e quindi attenderà che si verifichi un "evento" e questo evento viene generalmente segnalato da un interrupt. Il testo dice anche che l'interruzione può provenire dall'hardware o dal software. Come funziona, in modo un po 'più dettagliato? Il sistema operativo è guidato da interrupt?

Sto solo cercando una visione d'insieme.

Risposte:


8

Quando il sistema operativo esegue un processo come "init", avrebbe inviato segnali ad altri sottosistemi / gestori di dispositivi ecc., Come la memoria, i dispositivi I / O, ecc. L'interruzione è solo un modo per dire al processore o al Sistema operativo che è pronto, o ha un nuovo input, ecc. Quindi, durante init, il sistema operativo è in attesa che i sottosistemi siano pronti e un interruzione da questi sottosistemi indicherebbe esattamente questo. Questo è ciò a cui si riferisce "l'evento".

Per quanto riguarda gli interrupt hardware o software, gli interrupt di processo sono quelli che provengono dall'hardware. Per esempio. Dispositivi I / O come tastiera, ecc. Un interrupt di processo fa sì che il processore salvi il suo stato e inizi l'esecuzione del gestore di interrupt. D'altra parte, gli interrupt software sono istruzioni nel set di istruzioni, che fa sì che il processore cambi il suo livello di privilegio da supervisore utente, noto anche come interruttore di contesto. Questi dettagli saranno trattati più avanti nel libro di testo.


4

Gli interrupt consentono al sistema operativo di rilevare un evento esterno, ad esempio un clic del mouse. Gli interrupt software, meglio noti come eccezioni, consentono al sistema operativo di gestire eventi insoliti come errori di divisione per zero derivanti dall'esecuzione del codice.

La sequenza di eventi è di solito così:

  1. L'hardware segnala un interrupt al processore
  2. Il processore nota l'interruzione e sospende il software attualmente in esecuzione
  3. Il processore passa alla funzione di gestione degli interrupt corrispondente nel sistema operativo
  4. Il gestore di interrupt esegue il suo corso e ritorna dall'interrupt
  5. Il processore riprende da dove era stato interrotto nel software precedentemente in esecuzione

L'interrupt più importante per il sistema operativo è l'interrupt tick tick. Il timer tic interrupt consente al sistema operativo di riprendere periodicamente il controllo dal processo utente attualmente in esecuzione. Il sistema operativo può quindi decidere di pianificare un altro processo, tornare allo stesso processo, eseguire le pulizie, ecc. L'interrupt tick timer fornisce le basi per il concetto di multitasking preventivo.


4

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.


3

Il sistema operativo è guidato da interrupt. Ciò significa che:

Se non ci sono processi da eseguire, nessun dispositivo I / O da riparare e nessun utente a cui rispondere, un sistema operativo siederà in silenzio, aspettando che accada qualcosa. Gli eventi sono quasi sempre segnalati dal verificarsi di un interrupt o di una trap, una trap è un interrupt di processo generato quando viene fornita un'istruzione non valida e quindi restituisce il controllo al sistema operativo.

Un esempio di un'istruzione non valida è quando un programma sta tentando di accedere allo spazio di memoria di un altro programma senza avere un'autorizzazione.


gli interrupt non devono sempre essere qualcosa di brutto o invalido come hai descritto

stavo descrivendo l'interrupt della trap, per quanto ne so sia stato generato a causa di errori o istruzioni non valide. grazie per avermi informato
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.