Razlika između prekida i iznimke

Razlika između prekida i iznimke
Razlika između prekida i iznimke

Video: Razlika između prekida i iznimke

Video: Razlika između prekida i iznimke
Video: What is IP address and Port number ? 2024, Srpanj
Anonim

Prekid protiv iznimke

Na bilo kojem računalu, tijekom normalnog izvršavanja programa, može doći do događaja koji mogu uzrokovati privremeno zaustavljanje CPU-a. Ovakvi događaji nazivaju se prekidi. Prekidi mogu biti uzrokovani softverskim ili hardverskim greškama. Hardverski prekidi nazivaju se (jednostavno) prekidi, dok se softverski prekidi nazivaju iznimkama. Jednom kada se podigne prekid (softverski ili hardverski), kontrola se prenosi na posebnu potprogramu nazvanu ISR (Interrupt Service Routine) koja može rukovati uvjetima koje je pokrenuo prekid.

Što je prekid?

Pojam Interrupt obično je rezerviran za hardverske prekide. To su prekidi kontrole programa uzrokovani vanjskim hardverskim događajima. Ovdje vanjski znači vanjski u odnosu na CPU. Hardverski prekidi obično dolaze iz mnogo različitih izvora kao što su tajmer čip, periferni uređaji (tipkovnice, miš, itd.), I/O portovi (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 povezanog s programom koji se izvršava. Na primjer, događaj kao što je korisnikov pritisak na tipku na tipkovnici ili istek internog hardverskog timera može potaknuti ovu vrstu prekida i može obavijestiti CPU da određeni uređaj treba malo pažnje. U takvoj situaciji CPU će zaustaviti sve što je radio (tj. pauzirati trenutni program), pružiti uslugu koju uređaj zahtijeva i vratiti se na normalan program. Kada dođe do hardverskih prekida i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. u 80×86 strojevima). Ako trebate da se dogode drugi hardverski prekidi dok ISR radi, morate to učiniti eksplicitno brisanjem oznake prekida (sa sti instrukcijom). U 80×86 strojevima, brisanje oznake prekida će utjecati samo na hardverske prekide.

Što su iznimke?

Iznimka je softverski prekid, koji se može identificirati kao posebna rutina rukovatelja. Iznimka se može identificirati kao zamka koja se automatski pojavljuje (zamka se može identificirati kao prijenos kontrole koji pokreće programer). Općenito, nema specifičnih uputa povezanih s iznimkama (zamke se generiraju korištenjem posebnih uputa). Dakle, do iznimke dolazi zbog "izuzetnog" stanja koje se događa tijekom izvođenja programa. Na primjer, dijeljenje s nulom, izvođenje nedopuštenog operacijskog koda ili pogreška povezana s memorijom mogu uzrokovati iznimke. Kad god se pojavi iznimka, CPU privremeno obustavlja program koji je izvršavao i pokreće ISR. ISR će sadržavati što učiniti s iznimkom. Može ispraviti problem ili, ako to nije moguće, može elegantno prekinuti program ispisivanjem odgovarajuće poruke o pogrešci. Iako određena instrukcija ne uzrokuje iznimku, iznimku će uvijek uzrokovati instrukcija. Na primjer, pogreška dijeljenja s nulom može se dogoditi samo tijekom izvođenja instrukcije dijeljenja.

Koja je razlika između prekida i iznimke?

Prekidi su hardverski prekidi, dok su iznimke softverski prekidi. Pojave hardverskih prekida obično onemogućuju druge hardverske prekide, ali to ne vrijedi za iznimke. Ako trebate onemogućiti hardverske prekide dok se ne posluži iznimka, morate eksplicitno poništiti oznaku prekida. I obično oznaka prekida na računalu utječe na (hardverske) prekide za razliku od iznimaka. To znači da brisanje ove oznake neće spriječiti iznimke.

Preporučeni: