Quali sono le differenze tra interrupt / eccezioni software

4

Quindi volevo sapere le differenze tra questi due. So che gli interrupt software sono a volte indicati come eccezioni, il che rende le differenze tra i due un po 'confuse. Chiedendo questa intera domanda da una prospettiva a livello di programma; non sarebbe un'eccezione solo un'azione illegale mentre un interrupt software potrebbe non essere?

In primo luogo, sto comprendendo questo molto correttamente e inoltre ci sono altre differenze tra i due?

    
posta bkbles 23.10.2016 - 21:14
fonte

2 risposte

9

Consentitemi di espandere la bella risposta di @ Tymski.

Iniziamo con una revisione degli interrupt hardware.

Questi possono verificarsi in qualsiasi momento (presupponendo che siano abilitati) e sono quindi asincroni al flusso di esecuzione corrente. La CPU accetta gli interrupt hardware ascoltando le linee esterne in parallelo con l'esecuzione del flusso di istruzioni. Quando viene rilevata una richiesta di interruzione su queste linee esterne, il processore consente all'elaborazione di continuare ad avanzare fino a un buon punto di rottura. Ad esempio, un processore pipeline consentirà il completamento delle istruzioni già avviate, senza tuttavia avviare nuove istruzioni. Quando è pronto, la CPU avvierà l'elaborazione degli interrupt. Questo può essere un processo relativamente complesso, anche a volte, o alcune parti di esso, indicato come un interruttore di contesto. L'esecuzione della modalità utente cessa. Viene immessa la modalità privilegiata (ovvero il sistema operativo). Il contesto attuale viene salvato - i registri CPU conservano principalmente i valori della modalità utente; la posizione da salvare è di solito da qualche parte nel contesto privilegiato. Il processore fornisce quindi il flusso di controllo a un gestore di interrupt di basso livello. Il gestore di interrupt di contesto privilegiato determina quindi il flusso successivo da eseguire, ad esempio un gestore di interrupt di livello più alto appropriato.

Un interrupt software è molto simile nel meccanismo, con la differenza principale che si verifica con l'esecuzione di un'istruzione di interruzione software, a volte chiamata trappola. Quindi, questi si verificano in modo sincrono al flusso di istruzioni attualmente in esecuzione. Lo stesso contesto generale passa dalla modalità utente a quella privilegiata e viene eseguito prendendo in prestito lo stesso hardware, motivo per cui è chiamato interruzione. Questi trap vengono in genere utilizzati per il codice della modalità utente per effettuare chiamate di sistema.

Un'eccezione software può riferirsi alla stessa cosa, tranne che essere attivata dall'istruzione di interrupt software, viene attivata da condizioni anomale rilevate dalla CPU nell'esecuzione corrente del flusso di istruzioni, come la dereferenziazione del puntatore nullo o la divisione intera per zero .

Un'eccezione, il termine usato da solo, di solito si riferisce a un meccanismo del linguaggio di programmazione per rilevare e gestire gli errori sincroni nel thread corrente. Questi possono comportare un'eccezione software (ad es. Essere attivati dalla CPU per determinate istruzioni) oppure possono essere rilevati da test espliciti inseriti nel codice di esecuzione da un compilatore o JIT o da un software utente o di libreria che viene esplicitamente generato.

Come dice @Tymski, questi termini sono spesso scambiati, a volte erroneamente, ma a volte anche a causa del contesto.

    
risposta data 24.10.2016 - 01:34
fonte
2

Mentre un interrupt e un'eccezione concettualmente sono simili, esistono a diversi livelli. Detto questo, per confondere tutti noi, i termini sono talvolta usati in modo intercambiabile.

Penso agli interrupt come livello basso (vicino all'hardware) e alle eccezioni come livello elevato (il modo in cui scriviamo il codice in linguaggi di alto livello come Java o C #).

In altre parole, la vedo semplicemente così:

  • se sei un programmatore di basso livello (e scrivi driver ad esempio) gestisci interrupt .
  • se sei un programmatore di applicazioni e un programma in linguaggi di alto livello parlerai di eccezioni e gestione delle eccezioni .

Questo è in qualche modo simile alla differenza tra una routine e una funzione - significano la stessa cosa, ma sono usati da diversi tipi di ingegneri.

    
risposta data 24.10.2016 - 00:14
fonte

Leggi altre domande sui tag