Diferența dintre întrerupere și trap

Anonim

Întreruperea vs. Trap

În orice calculator, în timpul executării normale a unui program, pot apărea evenimente care pot întrerupe temporar CPU-ul. Evenimente ca acestea se numesc întreruperi. Întreruperile pot fi cauzate de defecțiuni software sau hardware. Întreruperile hardware sunt numite (pur și simplu) întreruperi, în timp ce întreruperile software sunt numite Excepții sau Capcane. O excepție este o întrerupere software generată automat, în timp ce un Trap este o întrerupere invocată de software inițiată de programator. Odată ce o întrerupere (software sau hardware) este ridicată, comanda este transferată la o subrutină specială numită ISR (Interrupt Service Routine) care poate face față condițiilor ridicate de întrerupere.

Ce este o întrerupere?

Termenul de întrerupere este de obicei rezervat pentru întreruperile hardware . Sunt întreruperi ale programului de control cauzate de evenimente hardware externe. Aici, externe înseamnă externe CPU . Întreruperile hardware provin de obicei din mai multe surse, cum ar fi cipul temporizat, dispozitivele periferice (tastaturi, mouse-ul etc.), porturile I / O (serial, paralel etc), unități de disc, ceas CMOS, card, placă video etc.). Asta înseamnă că întreruperea hardware nu apare aproape niciodată din cauza unui eveniment legat de programul de executare. De exemplu, un eveniment cum ar fi o apăsare de tastă a tastaturii de către utilizator sau o deconectare a temporizatorului hardware intern poate ridica acest tip de întrerupere și poate informa CPU-ul că un anumit dispozitiv are nevoie de o anumită atenție. Într-o astfel de situație, CPU-ul va opri orice face (de ex. Întrerupe programul curent), oferă serviciul solicitat de dispozitiv și va reveni la programul normal. Când se produc întreruperi hardware și CPU pornește ISR, alte întreruperi hardware sunt dezactivate (de exemplu, în 80 × 86 mașini). Dacă aveți nevoie de alte întreruperi hardware în timpul executării ISR, trebuie să faceți acest lucru în mod explicit prin eliminarea semnului de întrerupere (cu instrucțiunea sti). În mașinile de 80 × 86, ștergerea semnului de întrerupere va afecta numai întreruperile hardware.

Ce este o capcană?

O capcană poate fi identificată ca un transfer de control, care este inițiat de programator. Termenul Trap este folosit interschimbabil cu termenul Excepție (care este o întrerupere a software-ului care apare automat). Dar unii pot argumenta că o capcană este pur și simplu un apel special de subrutină. Deci, ele intră în categoria întreruperilor invocate de software. De exemplu, în mașinile de 80 × 86, un programator poate folosi instrucțiunea int pentru a iniția o capcană. Deoarece o capcană este întotdeauna necondiționată, controlul va fi întotdeauna transferat la subrutina asociată cu capcana. Instrucțiunea exactă, care invocă rutina pentru manipularea capcanei, este ușor de identificat deoarece se folosește o instrucțiune explicită pentru a specifica o capcană.

Care este diferența între întrerupere și trap?

Întreruperile sunt întreruperi hardware, în timp ce capcane sunt întreruperi invocate de software. Ocurențele întreruperilor hardware dezactivează de obicei alte întreruperi hardware, dar acest lucru nu este valabil pentru capcane. Dacă trebuie să dezactivați întreruperile hardware până când este servită o capcană, trebuie să ștergeți explicit stegul de întrerupere. De obicei, pavilionul de întrerupere de pe computer afectează (hardware) întrerupe, spre deosebire de capcane. Aceasta înseamnă că ștergerea acestui steag nu va împiedica capcanele. Spre deosebire de capcane, întreruperile ar trebui să păstreze starea anterioară a procesorului.