Diferență între întrerupere și excepție

Anonim

Întrerupere vs Excepție

În orice calculator, în timpul executării normale a unui program, pot apărea evenimente care pot întrerupe temporar CPU-ul. Evenimente ca aceasta 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. 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 întreruperea?

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 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ă de la tastatură de către utilizator sau un temporizator intern al temporizării hardware poate ridica acest tip de întrerupere și poate informa CPU-ul că un anumit dispozitiv are nevoie de o anumită atenție. Într-o situație de genul asta, CPU-ul va opri ceea ce făcea (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 semnalizatorului de întrerupere va afecta numai întreruperile hardware.

Ce sunt excepțiile?

Excepția este o întrerupere a software-ului, care poate fi identificată ca o rutină de manipulare specială. Excepția poate fi identificată ca o capcană care apare automat (o capcană poate fi identificată ca un transfer de control, care este inițiat de programator). În general, nu există instrucțiuni specifice asociate excepțiilor (capcanele sunt generate utilizând o instrucțiune specifică). Deci, o excepție apare din cauza unei condiții "excepționale" care apare în timpul executării programului. De exemplu, împărțirea la zero, executarea unui opcod ilegal sau a unei erori legate de memorie ar putea cauza excepții. Ori de câte ori se ridică o excepție, CPU suspendă temporar programul pe care îl execută și pornește ISR-ul. ISR va conține ce trebuie să faceți cu excepția. Este posibil să remediați problema sau, dacă nu este posibil, aceasta poate întrerupe grațios programul imprimând un mesaj de eroare adecvat.Deși o instrucțiune specifică nu provoacă o excepție, o excepție va fi întotdeauna cauzată de o instrucțiune. De exemplu, eroarea de divizare prin zero poate apărea numai în timpul executării instrucțiunii de divizare.

Care este diferența dintre întrerupere și excepție?

Întreruperile sunt întreruperi hardware, în timp ce excepțiile sunt întreruperi software. Ocurențele întreruperilor hardware dezactivează de obicei alte întreruperi hardware, dar acest lucru nu este valabil pentru excepții. Dacă trebuie să dezactivați întreruperile hardware până când se va efectua o excepție, trebuie să ștergeți explicit stegul de întrerupere. De obicei, pavilionul de întrerupere de pe computer afectează (hardware) întrerupe, spre deosebire de excepții. Aceasta înseamnă că ștergerea acestui steag nu va împiedica excepțiile.