Differenza tra interruzione e trappola

Differenza tra interruzione e trappola
Differenza tra interruzione e trappola

Video: Differenza tra interruzione e trappola

Video: Differenza tra interruzione e trappola
Video: Differenza tra IT ed OT (Information Technology & Operational Technology) 2024, Luglio
Anonim

Interruzione vs Trappola

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 software o hardware. Gli interrupt hardware sono chiamati (semplicemente) Interrupt, mentre gli interrupt software sono chiamati Eccezioni o Trap. Un'eccezione è un interrupt software generato automaticamente, mentre un Trap è un interrupt richiamato dal software avviato dal programmatore. Una volta che un interrupt (software o hardware) viene generato, il controllo viene trasferito a una speciale subroutine denominata ISR (Interrupt Service Routine) in grado di gestire le condizioni che vengono generate dall'interrupt.

Cos'è un'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à qualsiasi cosa stesse 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.g. 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.

Cos'è una trappola?

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

Qual è la differenza tra Interruzione e Trappola?

Gli interrupt sono interrupt hardware, mentre le trap sono interrupt richiamati dal software. Le occorrenze di interrupt hardware di solito disabilitano altri interrupt hardware, ma questo non è vero per le trap. Se è necessario non consentire gli interrupt hardware fino a quando non viene servita una trap, è necessario cancellare in modo esplicito il flag di interrupt. E di solito il flag di interruzione sul computer influisce sugli interrupt (hardware) anziché sui trap. Ciò significa che cancellare questo flag non impedirà le trappole. A differenza delle trap, gli interrupt dovrebbero preservare lo stato precedente della CPU.

Consigliato: