Întrerupeți-vă
În orice calculator, în timpul executării normale a unui program, pot apărea evenimente care pot provoca oprirea temporară a procesorului. 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ă, controlul 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 întrerupere este de obicei rezervat pentru întreruperile hardware. Acestea sunt întreruperi ale programului de control cauzate de evenimente hardware externe. Aici, mijloace externe externe pentru CPU. Întreruperile hardware provin de obicei din mai multe surse, cum ar fi cipul temporizator, dispozitivele periferice (tastaturi, mouse-ul etc.), porturile I / O (serial, paralel etc), unități de disc, ceas CMOS, carduri de extensie card, 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 ex. În mașini de 80 × 86). 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 sti instrucțiuni). În mașinile de 80 × 86, ștergerea semnalizatorului 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 de software 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șini de 80 × 86, un programator poate folosi int instrucțiune pentru inițierea unei capcane. 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 o instrucțiune explicită este utilizată pentru a specifica o capcană.
Care este diferența între întrerupere și capcana?
Î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.