Prekid vs Izuzetak
U bilo kojem računalu tijekom svog uobičajenog izvođenja programa može doći do događaja zbog kojih se CPU privremeno zaustavi. Ovakvi događaji nazivaju se prekidi. Prekidi mogu biti uzrokovani greškama u softveru ili hardveru. Hardverski prekidi se nazivaju (jednostavno) Prekidi, dok se softverski prekidi nazivaju Iznimke. Jednom kada je prekid (softverski ili hardverski) povišen, kontrola se prebacuje u posebnu potprogramu zvanu ISR (Interrupt Service Routine) koja može podnijeti uvjete koje podiže prekid.
Što je Prekid?
Izraz Prekid obično je rezerviran za hardverske prekide. Oni su prekidi kontrole programa uzrokovani vanjskim događajima hardvera. Ovdje su vanjska sredstva koja su vanjska za CPU. Prekidi hardvera najčešće dolaze iz različitih izvora, kao što su tajmer čip, periferni uređaji (tipkovnice, miš itd.), I / O portovi (serijski, paralelni itd.), Pogoni diska, 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 vezanog za izvršni program. Na primjer, događaj poput pritiska tipke na tipkovnici od strane korisnika ili unutarnje vremensko ograničenje vremenskog ograničenja hardvera može potaknuti ovu vrstu prekida i može obavijestiti CPU da određenom uređaju treba malo pažnje. U situaciji poput koje će CPU zaustaviti ono što je radio (tj. Zaustavio trenutni program), pružit će uslugu koju uređaj zahtijeva i vratit će se u uobičajeni program. Kada dođe do prekida hardvera i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. Na 80 × 86 strojevima). Ako su vam potrebni drugi prekidi hardvera tijekom ISR-a, to trebate izričito izbrisati zastavicu prekida (uz sti upute). Na 80 × 86 strojevima brisanje zastave prekida utječe samo na hardverske prekide.
Što su iznimke?
Izuzetak je softverski prekid, koji se može prepoznati kao posebna rutina za upravljanje. Iznimka se može prepoznati kao zamka koja se automatski pojavljuje (zamka se može prepoznati kao prijenos kontrole, koji pokreće programer). Općenito nema posebnih uputa povezanih s iznimkama (zamke se generiraju pomoću posebne upute). Dakle, iznimka se događa zbog „izuzetnog“ stanja koji se događa tijekom izvođenja programa. Na primjer, podjela na nulu, izvršavanje ilegalnog koda koda ili memorije mogu uzrokovati iznimke. Kad god se izuzme izuzetak, CPU privremeno zaustavlja program koji je izvršio i pokreće ISR. ISR će sadržavati što učiniti s iznimkom. Može ispraviti problem ili ako nije moguće, program graciozno prekinuti ispisom odgovarajuće poruke o pogrešci. Iako određena uputa ne uzrokuje iznimku, izuzetak će uvijek biti izazvan. Na primjer, podjela s nulom pogreške može se dogoditi samo tijekom izvršavanja upute o podjeli.
Koja je razlika između Prekida i Izuzeća?
Prekidi su hardverski prekidi, dok su iznimke softverski prekidi. Pojave hardverskih prekida obično onemogućuju ostale hardverske prekide, ali to nije istina za iznimke. Ako trebate onemogućiti hardverske prekide dok se ne posluži iznimka, morate izričito obrisati zastavu prekida. A obično zastava prekida na računalu utječe na (hardverske) prekide, za razliku od iznimki. To znači da brisanje ove zastave neće spriječiti iznimke.