Diferența dintre întrerupere și capcană

Diferența dintre întrerupere și capcană
Diferența dintre întrerupere și capcană

Video: Diferența dintre întrerupere și capcană

Video: Diferența dintre întrerupere și capcană
Video: MASA ȘI GREUTATEA 2024, Iulie
Anonim

Întrerupere vs Capcană

În orice computer, în timpul executării normale a unui program, pot exista evenimente care pot determina oprirea temporară a procesorului. Evenimente ca acestea se numesc întreruperi. Întreruperile pot fi cauzate fie de erori de software, fie de hardware. Întreruperile hardware se numesc (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 o capcană este o întrerupere invocată de software inițiată de programator. Odată declanșată o întrerupere (software sau hardware), controlul este transferat într-o subrutină specială numită ISR (Interrupt Service Routine) care poate gestiona condițiile generate de întrerupere.

Ce este o întrerupere?

Termenul de întrerupere este de obicei rezervat întreruperilor hardware. Sunt întreruperi ale controlului programului cauzate de evenimente hardware externe. Aici, extern înseamnă extern CPU. Întreruperile hardware provin de obicei din multe surse diferite, cum ar fi cip cronometru, dispozitive periferice (tastaturi, mouse etc.), porturi I/O (serial, paralel etc.), unități de disc, ceas CMOS, plăci de expansiune (placă de sunet, video). card, etc). Aceasta înseamnă că întreruperile hardware nu apar aproape niciodată din cauza unui eveniment legat de programul care se execută. De exemplu, un eveniment cum ar fi o apăsare de tastă pe tastatură de către utilizator sau un timer hardware intern poate genera acest tip de întrerupere și poate informa CPU că un anumit dispozitiv are nevoie de o anumită atenție. Într-o astfel de situație, CPU-ul va opri orice făcea (adică întrerupe programul curent), oferă serviciul necesar dispozitivului și va reveni la programul normal. Când apar întreruperi hardware și CPU pornește ISR, alte întreruperi hardware sunt dezactivate (de ex.g. î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 indicatorul de întrerupere (cu instrucțiune sti). La mașinile 80×86, ștergerea semnalizatorului 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 Capcană este folosit în mod interschimbabil cu termenul Excepție (care este o întrerupere software care apare automat). Dar unii ar putea argumenta 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 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 subrutinei asociate capcanei. Instrucțiunea exactă, care invocă rutina pentru gestionarea capcanei, este ușor de identificat deoarece o instrucțiune explicită este utilizată pentru a specifica o capcană.

Care este diferența dintre întrerupere și capcană?

Î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 valabil pentru capcane. Dacă trebuie să interziceți întreruperile hardware până când este difuzată o capcană, trebuie să ștergeți în mod explicit indicatorul de întrerupere. Și, de obicei, indicatorul de întrerupere de pe computer afectează întreruperile (hardware), spre deosebire de capcane. Aceasta înseamnă că ștergerea acestui steag nu va preveni capcanele. Spre deosebire de capcane, întreruperile ar trebui să păstreze starea anterioară a procesorului.

Recomandat: