Prekid vs izuzetak
Na bilo kojem računalu, tijekom uobičajenog izvršavanja programa, mogu se dogoditi događaji koji mogu uzrokovati privremeni zaustavljanje CPU-a. Događaji poput ovog nazivaju se prekidima. Prekide mogu uzrokovati softverske ili hardverske greške. Hardverski prekidi nazivaju se (jednostavno) prekidima, dok se softverski prekidi nazivaju iznimkama. Jednom kada se podigne prekid (softver ili hardver), kontrola se prenosi u posebnu potprogram koji se naziva ISR (Interrupt Service Rutine) koji može obraditi uvjete koje prekida stvara.
Što je prekid?
Pojam Prekid obično je rezerviran za hardverske prekide. Oni su prekidi upravljanja programom uzrokovani vanjskim hardverskim događajima. Ovdje vanjsko znači izvan CPU-a. Hardverski prekidi obično dolaze iz mnogih različitih izvora kao što su timer čip, periferni uređaji (tipkovnice, miš, itd.), I / O priključci (serijski, paralelni itd.), Diskovni pogoni, CMOS sat, kartice za proširenje (zvučna kartica, video kartica itd.). To znači da se hardverski prekidi gotovo nikad ne događaju zbog nekog događaja vezanog uz izvršni program. Na primjer, događaj poput pritiska tipke od strane korisnika ili vremenskog ograničenja internog hardverskog odbrojavanja može povećati ovu vrstu prekida i može obavijestiti CPU da određeni uređaj treba malo pažnje. U takvoj situaciji CPU će zaustaviti ono što je ikad radio (tj. Zaustavlja trenutni program),pruža uslugu koju zahtijeva uređaj i vratit će se na uobičajeni program. Kada se pojave hardverski prekidi i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. Na 80 × 86 strojevima). Ako su vam potrebni drugi hardverski prekidi dok se ISR izvodi, to morate učiniti izričito uklanjanjem zastavice prekida (s uputama sti). U strojevima 80 × 86, brisanje zastavice prekida utjecat će samo na hardverske prekide.brisanje zastavice prekida utjecat će samo na hardverske prekide.brisanje zastavice prekida utjecat će samo na hardverske prekide.
Što su iznimke?
Iznimka je softverski prekid koji se može prepoznati kao posebna rutina rukovatelja. Iznimka se može identificirati kao zamka koja se automatski javlja (Zamka se može identificirati kao prijenos kontrole, koji pokreće programer). Općenito, ne postoje posebne upute povezane s iznimkama (zamke se generiraju pomoću određene upute). Dakle, dolazi do iznimke zbog "iznimnog" stanja koje se događa tijekom izvršavanja programa. Na primjer, podjela s nulom, izvršavanje nezakonitog koda optike ili pogreške povezane s memorijom mogu uzrokovati iznimke. Kad god se pokrene iznimka, CPU privremeno obustavlja program koji je izvršavao i pokreće ISR. ISR će sadržavati što učiniti s iznimkom. To može ispraviti problem ili ako to nije moguće, može elegantno prekinuti program ispisom odgovarajuće poruke o pogrešci. Iako određena uputa ne uzrokuje iznimku, izuzetak će uvijek uzrokovati uputa. Na primjer, pogreška dijeljenja s nulom može se dogoditi samo tijekom izvršavanja naredbe dijeljenja.
Koja je razlika između prekida i iznimke?
Prekidi su hardverski, a iznimke su softverski. Pojave hardverskih prekida obično onemogućuju druge hardverske prekide, ali to ne vrijedi za iznimke. Ako trebate zabraniti hardverske prekide dok se ne posluži iznimka, morate izričito obrisati zastavicu prekida. I obično zastavica prekida na računalu utječe na (hardverske) prekide za razliku od iznimki. To znači da uklanjanje ove zastave neće spriječiti iznimke.