Diferența Dintre întrerupere și Excepție

Diferența Dintre întrerupere și Excepție
Diferența Dintre întrerupere și Excepție

Video: Diferența Dintre întrerupere și Excepție

Video: Diferența Dintre întrerupere și Excepție
Video: Diferența dintre „mi-ești dragă” și „te iubesc” 2024, Decembrie
Anonim

Întrerupere vs excepție

În orice computer, în timpul executării normale a unui program, ar putea exista evenimente care pot determina oprirea temporară a procesorului. Evenimente de acest gen se numesc întreruperi. Întreruperile pot fi cauzate de erori de software sau hardware. Întreruperile hardware sunt numite (pur și simplu) întreruperi, în timp ce întreruperile software se numesc excepții. Odată ce o întrerupere (software sau hardware) este ridicată, controlul este transferat către un subrutină specială numită ISR (Interrupt Service Routine) care poate gestiona condițiile care sunt ridicate de întrerupere.

Ce este întreruperea?

Termenul de întrerupere este de obicei rezervat pentru întreruperile hardware. Sunt întreruperi de control al programului cauzate de evenimente hardware externe. Aici, extern înseamnă extern CPU. Întreruperile hardware provin, de obicei, din mai multe surse diferite, cum ar fi cipul cu temporizator, dispozitivele periferice (tastaturi, mouse etc.), porturile I / O (serial, paralel etc.), unitățile de disc, ceasul CMOS, plăcile de expansiune (placa de sunet, video) card etc.). Asta înseamnă că întreruperile hardware nu apar aproape niciodată din cauza unui eveniment legat de programul de executare. De exemplu, un eveniment, cum ar fi o apăsare de tastă pe tastatură de către utilizator, sau o temporizare hardware temporizată 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 va opri ceea ce făcea vreodată (adică întrerupe programul curent),furnizează serviciul cerut de dispozitiv ș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ș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 semnalizatorul de întrerupere (cu instrucțiuni sti). La aparatele 80 × 86, ștergerea semnalizării de întrerupere va afecta doar întreruperile hardware.ștergerea semnalizării de întrerupere va afecta doar întreruperile hardware.ștergerea semnalizării de întrerupere va afecta doar întreruperile hardware.

Ce sunt excepțiile?

Excepția este o întrerupere software, 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țiile (capcanele sunt generate folosind 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 cod opțional ilegal sau defecțiune legată de memorie ar putea provoca excepții. Ori de câte ori se ridică 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 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, divizarea prin eroare 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. Aparițiile î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 servește o excepție, trebuie să ștergeți în mod explicit semnalizatorul de întrerupere. Și, de obicei, semnalizatorul de întrerupere de pe computer afectează întreruperile (hardware), spre deosebire de excepții. Aceasta înseamnă că ștergerea acestui semnal nu va împiedica excepții.

Recomandat: