Katkestus vs erand
Igas arvutis võib programmi tavapärase täitmise ajal esineda sündmusi, mis võivad põhjustada CPU ajutise seiskumise. Selliseid sündmusi nimetatakse katkestusteks. Katkestused võivad olla põhjustatud nii tarkvara- kui ka riistvararikkest. Riistvara katkestusi nimetatakse (lihts alt) katkestusteks, tarkvara katkestusi aga eranditeks. Kui katkestus (tarkvara või riistvara) on tõstetud, kantakse juhtimine üle spetsiaalsele alamprogrammile ISR (Interrupt Service Routine), mis saab hakkama katkestuse tekitatud tingimustega.
Mis on katkestus?
Mõiste Katkestus on tavaliselt reserveeritud riistvaraliste katkestuste jaoks. Need on välistest riistvarasündmustest põhjustatud programmijuhtimise katkestused. Siin tähendab väline protsessori välist. Riistvarakatkestused tulevad tavaliselt paljudest erinevatest allikatest, nagu taimerikiip, välisseadmed (klaviatuurid, hiir jne), I/O-pordid (jada-, paralleel- jne), kettaseadmed, CMOS-kell, laienduskaardid (helikaart, video). kaart jne). See tähendab, et mõne käivitava programmiga seotud sündmuse tõttu ei esine peaaegu kunagi riistvarakatkestusi. Näiteks võib selline sündmus, nagu kasutaja klahvivajutus klaviatuuril, või sisemine riistvarataimeri ajalõpp tõsta sellist katkestust ja teavitada protsessorit, et teatud seade vajab tähelepanu. Sellises olukorras peatab protsessor oma tegevuse (st peatab praeguse programmi), osutab seadmele vajalikku teenust ja naaseb tavapärasele programmile. Kui ilmnevad riistvarakatkestused ja CPU käivitab ISR-i, on muud riistvarakatkestused keelatud (nt 80 × 86 masinates). Kui teil on vaja muid riistvarakatkestusi ISR-i töötamise ajal, peate seda selgesõnaliselt tegema, tühjendades katkestuse lipu (koos juhistega sti).80 × 86 masinates mõjutab katkestuse lipu kustutamine ainult riistvaralisi katkestusi.
Mis on erandid?
Erand on tarkvara katkestus, mida saab tuvastada kui spetsiaalset käitleja rutiini. Erandiks võib olla automaatselt tekkiv lõks (lõksu saab tuvastada kui kontrolli üleandmist, mille algatab programmeerija). Üldiselt ei ole eranditega seotud konkreetseid juhiseid (lõksud genereeritakse konkreetse juhise abil). Seega ilmneb erand programmi täitmise ajal esineva "erandliku" tingimuse tõttu. Näiteks nulliga jagamine, ebaseadusliku opkoodi käivitamine või mäluga seotud tõrge võib põhjustada erandeid. Iga kord, kui tehakse erand, peatab CPU ajutiselt käivitatud programmi ja käivitab ISR-i. ISR sisaldab seda, mida teha erandiga. See võib probleemi lahendada või kui see pole võimalik, võib see programmi graatsiliselt katkestada, trükkides sobiva veateate. Kuigi konkreetne käsk ei põhjusta erandit, põhjustab erandi alati käsk. Näiteks nulliga jagamise viga saab toimuda ainult jagamiskäsu täitmise ajal.
Mis vahe on katkestusel ja erandil?
Katkestused on riistvarakatkestused, erandid aga tarkvarakatkestused. Riistvarakatkestuste esinemine keelab tavaliselt muud riistvarakatkestused, kuid see ei kehti erandite puhul. Kui teil on vaja riistvarakatkestused keelata kuni erandi teenindamiseni, peate katkestuse lipu selgesõnaliselt kustutama. Ja tavaliselt mõjutab arvuti katkestuse lipp (riistvara) katkestusi, mitte erandeid. See tähendab, et selle lipu kustutamine ei takista erandeid.