Întrerupere vs Excepție
În orice computer, în timpul executării normale a unui program, pot exista evenimente care pot determina oprirea temporară a procesorului. Evenimente ca acesta se numesc întreruperi. Întreruperile pot fi cauzate fie de erori de software, fie de 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 declanșată, controlul este transferat la o subrutină specială numită ISR (Interrupt Service Routine) care poate gestiona condițiile generate de întrerupere.
Ce este î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, procesorul va opri tot ceea ce făcea (adică întrerupe programul curent), furnizează 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 exemplu, în mașinile 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 sunt excepțiile?
Excepția este o întrerupere a software-ului, care poate fi identificată ca o rutină specială de gestionare. 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 cu excepții (capcanele sunt generate folosind o instrucțiune specifică). Deci, apare o excepție din cauza unei condiții „excepționale” care apare în timpul execuției programului. De exemplu, împărțirea la zero, executarea unui cod operațional ilegal sau o eroare legată de memorie ar putea cauza excepții. Ori de câte ori este ridicată o excepție, CPU suspendă temporar programul pe care îl executa și pornește ISR. ISR va conține ce trebuie făcut cu excepția. Poate corecta problema sau, dacă nu este posibil, poate anula programul cu grație prin imprimarea unui mesaj de eroare adecvat. Deși o anumită instrucțiune nu provoacă o excepție, o excepție va fi întotdeauna cauzată de o instrucțiune. De exemplu, eroarea de împărțire la zero poate apărea numai în timpul execuției instrucțiunii de împărțire.
Care este diferența dintre întrerupere și excepție?
Întreruperile sunt întreruperi hardware, în timp ce excepțiile sunt întreruperi software. Aparițiile întreruperilor hardware dezactivează de obicei alte întreruperi hardware, dar acest lucru nu este valabil pentru excepții. Dacă trebuie să interziceți întreruperile hardware până când este furnizată o excepție, trebuie să ștergeți în mod explicit semnalizarea de întrerupere. Și, de obicei, indicatorul de întrerupere de pe computer afectează întreruperile (hardware), spre deosebire de excepții. Aceasta înseamnă că ștergerea acestui semnalizare nu va împiedica excepțiile.