Differenza tra interruzione ed eccezione

Differenza tra interruzione ed eccezione
Differenza tra interruzione ed eccezione

Video: Differenza tra interruzione ed eccezione

Video: Differenza tra interruzione ed eccezione
Video: Come avvengono le inondazioni e perché in Italia sono così frequenti? 2024, Luglio
Anonim

Interruzione vs eccezione

In qualsiasi computer, durante la normale esecuzione di un programma, potrebbero verificarsi eventi che possono causare l'arresto temporaneo della CPU. Eventi come questo sono chiamati interrupt. Gli interrupt possono essere causati da errori software o hardware. Gli interrupt hardware sono chiamati (semplicemente) Interrupt, mentre gli interrupt software sono chiamati Eccezioni. Una volta che viene 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'è Interruzione?

Il termine Interrupt è solitamente riservato agli interrupt hardware. Sono interruzioni del controllo del programma causate da eventi hardware esterni. Qui esterno significa esterno alla CPU. Gli interrupt hardware di solito provengono da molte fonti diverse come chip timer, dispositivi periferici (tastiere, mouse, ecc.), porte I/O (seriale, parallela, 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 correlato al programma in esecuzione. Ad esempio, un evento come la pressione di un tasto sulla tastiera da parte dell'utente o un timeout del timer hardware interno può generare questo tipo di interruzione e può informare la CPU che un determinato dispositivo necessita di attenzione. In una situazione del genere la CPU interromperà ciò che stava facendo (cioè sospende il programma corrente), fornisce il servizio richiesto dal dispositivo e tornerà al programma normale. Quando si verificano interrupt di processo e la CPU avvia l'ISR, gli altri interrupt di processo vengono disabilitati (ad es. nelle macchine 80×86). Se è necessario che si verifichino altri interrupt hardware mentre l'ISR è in esecuzione, è necessario farlo in modo esplicito cancellando il flag di interrupt (con l'istruzione sti). Nelle macchine 80×86, la cancellazione del flag di interruzione influirà solo sugli interrupt hardware.

Che cosa sono le eccezioni?

Exception è un interrupt software, che può essere identificato come una routine di gestione speciale. L'eccezione può essere identificata come una trappola che si verifica automaticamente (una trappola può essere identificata come un trasferimento di controllo, che viene avviato dal programmatore). In genere, non ci sono istruzioni specifiche associate alle eccezioni (le trap vengono generate utilizzando un'istruzione specifica). Quindi, si verifica un'eccezione 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. ISR conterrà cosa fare con l'eccezione. Potrebbe correggere il problema o, se non è possibile, potrebbe interrompere il programma stampando un messaggio di errore appropriato. Sebbene un'istruzione specifica non causi un'eccezione, un'eccezione sarà sempre causata da un'istruzione. Ad esempio, l'errore di divisione per zero può verificarsi solo durante l'esecuzione dell'istruzione di divisione.

Qual è la differenza tra Interruzione ed Eccezione?

Gli interrupt sono interrupt hardware, mentre le eccezioni sono interrupt software. Le occorrenze di interrupt hardware di solito disabilitano altri interrupt hardware, ma questo non è vero per le eccezioni. Se è necessario non consentire gli interrupt hardware fino a quando non viene servita un'eccezione, è necessario cancellare in modo esplicito il flag di interrupt. E di solito il flag di interruzione sul computer influisce sugli interrupt (hardware) anziché sulle eccezioni. Ciò significa che la cancellazione di questo flag non impedirà le eccezioni.

Consigliato: