Întrerupere vs excepție
În orice calculator, în timpul executării normale a unui program, pot apărea evenimente care pot provoca oprirea temporară a procesorului. 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ă, controlul 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 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 ceea ce făcea (adică î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 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 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 execută o excepție, trebuie să ștergeți în mod 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.