Interrupt vs Trap
In qualsiasi computer, durante la normale esecuzione di un programma, potrebbero verificarsi eventi che possono causare l'arresto temporaneo della CPU. Eventi come questi sono chiamati interrupt. Gli interrupt possono essere causati da errori hardware o software. Gli interrupt hardware vengono chiamati (semplicemente) Interrupt, mentre gli interrupt software sono chiamati Exceptions o Trap. Un'eccezione è un interrupt software generato automaticamente, mentre un trap è un interrupt richiamato dal software avviato dal programmatore. Una volta generato un interrupt (software o hardware), il controllo viene trasferito a una subroutine speciale chiamata ISR (Interrupt Service Routine) in grado di gestire le condizioni generate dall'interrupt.
Cos'è un interrupt?
Il termine Interruzione è solitamente riservato agli interrupt hardware. Sono interruzioni di controllo del programma causate da eventi hardware esterni. Qui, esterno significa esterno alla CPU. Gli interrupt di solito provengono da molte fonti diverse come il timer chip, periferiche (tastiere, mouse, ecc.), Porte I / O (seriali, parallele, ecc.), Unità disco, orologio CMOS, schede di espansione (scheda audio, video carta, ecc.). Ciò significa che le interruzioni hardware non si verificano quasi mai a causa di alcuni eventi correlati al programma in esecuzione. Ad esempio, un evento come una pressione di un tasto sulla tastiera da parte dell'utente o un timeout del temporizzatore hardware interno può sollevare questo tipo di interruzione e informare la CPU che un determinato dispositivo richiede una certa attenzione. In una situazione del genere, la CPU interromperà qualsiasi cosa stia facendo (cioè mette in pausa il programma corrente), fornisce il servizio richiesto dal dispositivo e tornerà al normale programma. Quando si verificano interruzioni hardware e la CPU avvia l'ISR, gli altri interrupt hardware sono disabilitati (ad esempio in macchine 80 × 86). Se occorrono altri interrupt hardware mentre l'ISR è in esecuzione, è necessario farlo esplicitamente cancellando il flag di interrupt (con sti istruzioni). Nelle macchine 80 × 86, la cancellazione del flag di interrupt influisce solo sugli interrupt hardware.
Cos'è una trappola?
Una trappola può essere identificata come un trasferimento di controllo, che viene avviato dal programmatore. Il termine Trap viene utilizzato in modo intercambiabile con il termine Exception (che è un interrupt software che si verifica automaticamente). Ma alcuni potrebbero obiettare che una trappola è semplicemente una chiamata di subroutine speciale. Quindi rientrano nella categoria degli interrupt richiamati dal software. Ad esempio, in macchine 80 × 86, un programmatore può usare il int istruzioni per iniziare una trappola. Poiché una trappola è sempre incondizionata, il controllo sarà sempre trasferito alla subroutine associata alla trappola. L'istruzione esatta, che richiama la routine per gestire la trappola, è facilmente identificabile perché un'istruzione esplicita viene utilizzata per specificare una trappola.
Qual è la differenza tra interrupt e trap?
Gli interrupt sono interruzioni hardware, mentre i trap sono interrupt richiamati dal software. Le occorrenze di interrupt hardware di solito disabilitano altri interrupt hardware, ma questo non è vero per trap. Se è necessario disabilitare gli interrupt hardware finché non viene pubblicata una trap, è necessario cancellare esplicitamente il flag di interrupt. E in genere il flag di interrupt sul computer influisce sugli interrupt (hardware) anziché sulle trappole. Ciò significa che cancellare questo flag non impedirà le trappole. A differenza delle trap, gli interrupt dovrebbero preservare lo stato precedente della CPU.