Razlika između prekida i izuzetka

Razlika između prekida i izuzetka
Razlika između prekida i izuzetka

Video: Razlika između prekida i izuzetka

Video: Razlika između prekida i izuzetka
Video: Razlika između poplave, bujice i izljeva vode 2024, Juli
Anonim

Prekid vs izuzetak

U svakom računaru, tokom njegovog normalnog izvršavanja programa, može doći do događaja koji mogu uzrokovati da se CPU privremeno zaustavi. Događaji poput ovog nazivaju se prekidima. Prekidi mogu biti uzrokovani ili softverskim ili hardverskim greškama. Hardverski prekidi se nazivaju (jednostavno) prekidi, dok se softverski prekidi nazivaju izuzecima. Jednom kada je prekinut (softverski ili hardverski) podignut, kontrola se prenosi na poseban potprogram koji se zove ISR (Interrupt Service Routine) koji može da obradi uslove koje izaziva prekid.

Šta je prekid?

Izraz Interrupt je obično rezervisan za hardverske prekide. To su prekidi kontrole programa uzrokovani vanjskim hardverskim događajima. Ovdje eksterno znači eksterno za CPU. Hardverski prekidi obično dolaze iz mnogo različitih izvora kao što su tajmer čip, periferni uređaji (tastature, miš, itd.), I/O portovi (serijski, paralelni, itd.), disk jedinice, CMOS sat, kartice za proširenje (zvučna kartica, video kartica, itd). To znači da se hardverski prekidi gotovo nikada ne događaju zbog nekog događaja povezanog s programom koji se izvršava. Na primjer, događaj poput pritiska na tipku na tipkovnici od strane korisnika ili internog hardverskog tajmera tajmera može izazvati ovu vrstu prekida i može obavijestiti CPU da je određenom uređaju potrebna pažnja. U takvoj situaciji CPU će zaustaviti sve što je radio (tj. pauzirati trenutni program), pružiti uslugu koju uređaj zahtijeva i vratit će se u normalan program. Kada dođe do hardverskih prekida i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. u 80×86 mašinama). Ako trebate da dođe do drugih hardverskih prekida dok ISR radi, to morate učiniti eksplicitno brisanjem zastavice prekida (sa sti instrukcijom). Na mašinama veličine 80×86, brisanje zastavice prekida će uticati samo na hardverske prekide.

Šta su izuzeci?

Izuzetak je softverski prekid, koji se može identificirati kao posebna rutina rukovanja. Izuzetak se može identificirati kao zamka koja se automatski pojavljuje (Zamka se može identificirati kao prijenos kontrole, koji inicira programer). Općenito, ne postoje posebne instrukcije povezane s izuzecima (zamke se generiraju pomoću određene instrukcije). Dakle, do izuzetka dolazi zbog "izuzetnog" stanja koje se javlja tokom izvršavanja programa. Na primjer, dijeljenje sa nulom, izvršenje ilegalnog koda operacije ili greška u vezi s memorijom može uzrokovati iznimke. Kad god se podigne izuzetak, CPU privremeno obustavlja program koji je izvršavao i pokreće ISR. ISR će sadržavati što učiniti s izuzetkom. Može ispraviti problem ili ako nije moguće, može graciozno prekinuti program tako što će ispisati odgovarajuću poruku o grešci. Iako određena instrukcija ne uzrokuje izuzetak, izuzetak će uvijek biti uzrokovan instrukcijom. Na primjer, greška dijeljenja nulom može se dogoditi samo tokom izvršavanja instrukcije dijeljenja.

Koja je razlika između prekida i iznimke?

Prekidi su hardverski prekidi, dok su izuzeci softverski prekidi. Pojave hardverskih prekida obično onemogućuju druge hardverske prekide, ali to nije tačno za izuzetke. Ako trebate zabraniti hardverske prekide dok se ne posluži izuzetak, morate eksplicitno izbrisati oznaku prekida. I obično zastavica prekida na računaru utiče na (hardverske) prekide za razliku od izuzetaka. To znači da brisanje ove zastavice neće spriječiti izuzetke.

Preporučuje se: