Întrerupere vs Capcană
În orice computer, în timpul executării normale a unui program, ar putea exista evenimente care pot determina oprirea temporară a procesorului. Evenimente ca acestea se numesc întreruperi. Întreruperile pot fi cauzate de erori de software sau hardware. Întreruperile hardware sunt numite (pur și simplu) întreruperi, în timp ce întreruperile software se numesc excepții sau capcane. O excepție este o întrerupere software generată automat, în timp ce o Trap este o întrerupere invocată de software inițiată de programator. Odată ce o întrerupere (software sau hardware) este ridicată, controlul este transferat către un subrutină specială numită ISR (Interrupt Service Routine) care poate gestiona condițiile care sunt ridicate de întrerupere.
Ce este o întrerupere?
Termenul de întrerupere este de obicei rezervat pentru întreruperile hardware. Sunt întreruperi de control al programului cauzate de evenimente hardware externe. Aici, extern înseamnă extern CPU. Întreruperile hardware provin, de obicei, din mai multe surse diferite, cum ar fi cipul cu temporizator, dispozitivele periferice (tastaturi, mouse etc.), porturile I / O (serial, paralel etc.), unitățile de disc, ceasul CMOS, plăcile de expansiune (placa de sunet, video) card etc.). Asta înseamnă că întreruperile hardware nu apar aproape niciodată din cauza unui eveniment legat de programul de executare. De exemplu, un eveniment, cum ar fi o apăsare de tastă pe tastatură de către utilizator, sau o temporizare hardware temporizată 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 va opri orice a făcut (adică întrerupe programul curent),furnizează serviciul cerut de dispozitiv și va reveni la programul normal. Când apar întreruperi hardware și CPU pornește ISR, alte întreruperi hardware sunt dezactivate (de exemplu, în mașini 80 × 86). Dacă aveți nevoie de alte întreruperi hardware în timp ce ISR rulează, trebuie să faceți acest lucru în mod explicit ștergând semnalizatorul de întrerupere (cu instrucțiuni sti). La aparatele 80 × 86, ștergerea semnalizării de întrerupere va afecta doar întreruperile hardware.ștergerea semnalizării de întrerupere va afecta doar întreruperile hardware.ștergerea semnalizării de întrerupere va afecta doar î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 utilizat interschimbabil cu termenul Exception (care este o întrerupere software care apare automat). Dar unii ar putea susține că o capcană este pur și simplu un apel special de subrutină. Deci se încadrează î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 de manipulare a capcanei, este ușor identificată, deoarece o instrucțiune explicită este utilizată pentru a specifica o capcană.
Care este diferența dintre Interrupt și Trap?
Întreruperile sunt întreruperi hardware, în timp ce capcanele sunt întreruperi invocate de software. Aparițiile întreruperilor hardware dezactivează de obicei alte întreruperi hardware, dar acest lucru nu este adevărat pentru capcane. Dacă trebuie să dezactivați întreruperile hardware până când este servită o capcană, trebuie să ștergeți în mod explicit semnalizatorul de întrerupere. Și, de obicei, semnalizatorul de întrerupere de pe computer afectează întreruperile (hardware), 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.