Katkesta vs erand
Mis tahes arvutis võib programmi tavapärase täitmise ajal esineda sündmusi, mis võivad põhjustada protsessori ajutise peatamise. Selliseid sündmusi nimetatakse katkestusteks. Katkestusi võivad põhjustada nii tarkvara kui ka riistvara rikked. Riistvarakatkestusi nimetatakse (lihtsalt) katkestusteks, tarkvara katkestusi nimetatakse eranditeks. Kui katkestus (tarkvara või riistvara) on tõstatatud, viiakse juhtimine spetsiaalsesse alamprogrammi nimega ISR (katkestatav teenuse rutiin), mis saab hakkama katkestuse tekitatud tingimustega..
Mis katkestab?
Termin katkestatakse tavaliselt riistvarakatkestuste jaoks. Need on välise riistvara sündmustest põhjustatud programmi juhtimise katkestused. Siin on protsessorist väljaspool olevad välised vahendid. Riistvaraprobleemid pärinevad tavaliselt paljudest erinevatest allikatest, näiteks taimerikiip, lisaseadmed (klaviatuurid, hiir jne), sisend- / väljundpordid (jada-, paralleelsed jne), kettadraivid, CMOS-kell, laienduskaardid (helikaart, video kaart jms). See tähendab, et riistvaraprobleeme peaaegu kunagi ei juhtu mõne käivitusprogrammiga seotud sündmuse tõttu. Näiteks võib selline sündmus nagu kasutaja klaviatuuri vajutus klaviatuuril või riistvara sisemise taimeri aegumine sellist tüüpi katkestust põhjustada ja võib keskseadmele teatada, et teatud seade vajab teatavat tähelepanu. Sellises olukorras peatab CPU selle, mida ta kunagi tegi (st peatab praeguse programmi), osutab seadmele vajalikku teenust ja naaseb tavapärase programmi juurde. Kui riistvaraprobleemid ilmnevad ja protsessor käivitab ISR-i, keelatakse muud riistvaraprobleemid (nt 80 × 86 masinas). Kui vajate ISR-i töötamise ajal muid riistvaraprobleeme, peate seda tegema selgesõnaliselt, katkestades katkestamise lipu (koos sti-juhisega). 80 × 86 masinas mõjutab katkestuse lipu tühjendamine ainult riistvara katkestusi.
Mis on erandid??
Erandiks on tarkvarakatkestus, mida saab eristada käitleja erirutiinist. Erandi võib tuvastada automaatselt tekkiva lõksuna (lõksu saab tuvastada juhtimise ülekandjana, mille käivitab programmeerija). Üldiselt pole eranditega seotud konkreetseid juhiseid (püünised luuakse konkreetse juhise abil). Niisiis, erand ilmneb programmi täitmise ajal esineva “erandliku” olukorra tõttu. Näiteks nulliga jagamine, ebaseadusliku koodkoodi täitmine või mäluga seotud tõrge võib põhjustada erandeid. Kui erand tehakse, peatab protsessor ajutiselt programmi, mida ta täitis, ja käivitab ISR-i. ISR sisaldab seda, mida erandiga teha. See võib probleemi lahendada või kui see pole võimalik, võib programmi katkestada, grafeerides sobiva veateate. Kuigi konkreetne juhis ei põhjusta erandit, põhjustab erand alati juhise. Näiteks võib nullveaga jagamine toimuda ainult jagamiskäsu täitmise ajal.
Mis vahe on katkestamisel ja erandil??
Katkestused on riistvarakatkestused, erandid on tarkvarakatkestused. Riistvaraprobleemide esinemine keelab tavaliselt muud riistvaraprobleemid, kuid erandite puhul see ei kehti. Kui peate keelama riistvarakatkestused kuni erandi kättetoimetamiseni, peate katkestuse lipu selgesõnaliselt tühjendama. Ja tavaliselt mõjutab katkestuste lipp arvutis (riistvara) katkestusi, mitte erandeid. See tähendab, et selle lipu tühjendamine ei takista erandeid.