Differenza tra interrupt e trappola

Anonim

Interrupt vs Trap

In qualsiasi computer, durante la normale esecuzione di un programma, potrebbero verificarsi eventi che possono causare la temporanea interruzione della CPU. Eventi come questi sono chiamati interrupt. Gli interrupt possono essere causati da errori software o hardware. Gli interrupt hardware vengono chiamati (semplicemente) Interrupt, mentre gli interrupt software vengono chiamati Eccezioni o Trappole. Un'eccezione è un interrupt di software generato automaticamente, mentre una Trappola è un interrupt invocato dal software avviato dal programmatore. Una volta che un interrupt (software o hardware) viene sollevato, il controllo viene trasferito ad una speciale sottoprogramma chiamata ISR (Routing Service Service) che può gestire le condizioni che vengono sollevate dall'interruzione.

Che cos'è un interrupt?

Il termine Interrupt è di solito riservato agli interrupt hardware . Sono interruzioni di controllo del programma causate da eventi hardware esterni. Qui, mezzi esterni esterni alla CPU . Gli interrupt hardware provengono normalmente da molte fonti diverse, quali chip timer, periferiche (tastiere, mouse ecc.), Porte I / O (seriali, parallele, ecc.), Unità disco, clock CMOS, schede di espansione scheda, scheda video, ecc.). Ciò significa che gli interrupt hardware non si verificano quasi mai a causa di qualche evento relativo al programma di esecuzione. Ad esempio, un evento come una pressione di una tastiera sulla tastiera da parte dell'utente o un timer di hardware interno può causare questo tipo di interrupt e può informare la CPU che un determinato dispositivo richiede una certa attenzione. In una situazione simile, la CPU interromperà ciò che stava facendo (ad esempio, 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, altri interrupt hardware vengono disabilitati (ad esempio in macchine da 80 × 86). Se occorrono altri interrupt di hardware durante l'esecuzione dell'ISR, è necessario farlo esplicitamente eliminando la bandiera di interrupt (con istruzione sti). Nelle macchine da 80 × 86, la cancellazione della bandiera di interrupt riguarda solo gli interrupt hardware.

Che cosa è una Trappola?

Una trappola può essere identificata come un trasferimento di controllo, che viene avviato dal programmatore. Il termine Trap è utilizzato in modo intercambiabile con il termine Exception (che è un interrupt software automaticamente). Ma alcuni possono sostenere che una trappola è semplicemente una chiamata speciale di subroutine. Quindi, rientrano nella categoria degli interrupt software invocati. Ad esempio, in macchine da 80 × 86, un programmatore può utilizzare l'istruzione int per avviare una trappola. Poiché una trappola è sempre incondizionata, il controllo verrà sempre trasferito alla subroutine associata alla trappola. L'istruzione esatta, che richiama la routine per la gestione della trappola, è facilmente identificabile perché viene usata un'istruzione esplicita per specificare una trappola.

Qual è la differenza tra Interrupt e Trappola?

Gli interrupt sono interrupt hardware, mentre le trappole sono interrupt software invocati. Le eventuali interruzioni di hardware disattivano normalmente altri interrupt hardware, ma ciò non è vero per le trappole. Se è necessario disabilitare gli interrupt hardware finché non viene eseguita una trappola, è necessario eliminare esplicitamente il flag di interrupt. Di solito, la bandiera di interrupt sul computer interessa (hardware) interrompe invece delle trappole. Ciò significa che la cancellazione di questa bandiera non impedirà le trappole. A differenza delle trappole, gli interrupt devono preservare lo stato precedente della CPU.