Differenza tra interrupt e eccezione

Anonim

Interrupt e Eccezione

In qualsiasi computer, durante la normale esecuzione di un programma, potrebbero verificarsi eventi che possono causare temporaneamente la CPU. Eventi come questo 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. 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'è l'interrupt?

Il termine Interrupt è generalmente 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 audio, video carta, 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 (esegue la pausa del 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 flag di interrupt solo influenzerà gli interrupt hardware.

Quali sono le eccezioni?

L'eccezione è un interrupt di software, che può essere identificato come una routine speciale gestore. L'eccezione può essere identificata come una trappola automatica (una trappola può essere identificata come un trasferimento di controllo, avviato dal programmatore). Generalmente, non ci sono istruzioni specifiche associate alle eccezioni (vengono generate le trappole usando un'istruzione specifica). Quindi, un'eccezione si verifica a causa di una condizione "eccezionale" che si verifica durante l'esecuzione del programma. Ad esempio, la divisione per zero, l'esecuzione di un codice operativo illegale o un errore relativo alla memoria potrebbero causare eccezioni. Ogni volta che viene sollevata un'eccezione, la CPU sospende temporaneamente il programma che stava eseguendo e avvia l'ISR. L'ISR conterrà che cosa fare con l'eccezione. Può correggere il problema o, se non è possibile, può interrompere il programma con grazia stampando un messaggio di errore appropriato.Anche se un'istruzione specifica non causa un'eccezione, un'eccezione sarà sempre causata da un'istruzione. Ad esempio, la divisione per errore zero può verificarsi solo durante l'esecuzione dell'istruzione di divisione.

Qual è la differenza tra Interrupt e Eccezione?

Gli interrupt sono interrupt hardware, mentre le eccezioni sono interrupt software. Le eventuali interruzioni hardware in genere disattivano altri interrupt hardware, ma ciò non è vero per le eccezioni. Se è necessario disabilitare gli interrupt hardware finché non viene eseguita un'eccezione, è necessario eliminare esplicitamente il flag di interrupt. E di solito la bandiera di interrupt sul computer interrompe (hardware) interrompeva in contrasto con le eccezioni. Ciò significa che la cancellazione di questa bandiera non impedirà eccezioni.