Katkestus vs erand
Igas arvutis võib programmi tavapärase käivitamise ajal olla sündmusi, mis võivad põhjustada protsessori ajutise seiskamise. Selliseid sündmusi nimetatakse katkestusteks. Katkestused võivad olla põhjustatud kas tarkvarast või riistvarast. Riistvarakatkestusi nimetatakse (lihtsalt) katkestusteks, tarkvara katkestusi aga eranditeks. Kui katkestus (tarkvara või riistvara) on tõstetud, viiakse juhtseade spetsiaalsesse alamprogrammi nimega ISR (Interrupt Service Routine), mis saab hakkama katkestusega tekitatud tingimustega.
Mis on katkestamine?
Termin Katkestus on tavaliselt reserveeritud riistvarakatkestustele. Need on välise riistvarasündmuse põhjustatud programmi juhtimise katkestused. Siin tähendab väline protsessori välist. Riistvarakatkestused pärinevad tavaliselt paljudest erinevatest allikatest, näiteks taimerikiibist, lisaseadmetest (klaviatuurid, hiir jne), sisend- / väljundportidest (jada-, paralleelsed jne), kettaseadmetest, CMOS-kellast, laienduskaartidest (helikaart, video) kaart jne). See tähendab, et riistvara katkestusi ei esine peaaegu kunagi mõne käivitava programmiga seotud sündmuse tõttu. Näiteks võib selline sündmus nagu kasutaja klahvivajutus klaviatuuril või sisemise riistvaralise taimeri ajastus aeglustada sellist katkestust ja teavitada protsessorit, et teatud seade vajab teatud tähelepanu. Sellises olukorras peatab protsessor selle, mida ta kunagi tegi (st peatab praeguse programmi),pakub seadmele vajalikku teenust ja naaseb tavapärase programmi juurde. Kui riistvarakatkestused ilmnevad ja protsessor käivitab ISR-i, keelatakse muud riistvarakatkestused (nt 80 × 86 masinates). Kui teil on vaja muid riistvarakatkestusi ISR-i töötamise ajal, peate seda tegema selgesõnaliselt, tühjendades katkestuse lipu (sti juhendiga). 80 × 86 masinates mõjutab katkestuse lipu tühjendamine ainult riistvara katkestusi.katkestuse lipu kustutamine mõjutab ainult riistvara katkestusi.katkestuse lipu kustutamine mõjutab ainult riistvara katkestusi.
Mis on erandid?
Erand on tarkvara katkestus, mida saab identifitseerida spetsiaalse käitleja rutiinina. Erandit saab identifitseerida automaatselt toimuva lõksuna (lõksu saab tuvastada juhtimise ülekandena, mille algatab programmeerija). Üldiselt pole eranditega seotud konkreetseid juhiseid (püünised genereeritakse konkreetse käsu abil). Niisiis, erand tekib programmi käivitamisel ilmnenud "erandliku" tingimuse tõttu. Näiteks võib nulliga jagamine, ebaseadusliku opkoodi käivitamine või mäluga seotud tõrge põhjustada erandeid. Alati, kui tõstatatakse erand, peatab keskseade ajutiselt selle käivitatava programmi ja käivitab ISR-i. ISR sisaldab erandeid, mida teha. See võib probleemi lahendada või kui see pole võimalik, võib programmi katkestada, printides sobiva veateate. Ehkki konkreetne käsk ei põhjusta erandit, põhjustab erandi alati käsk. Näiteks nulliga jagamine viga saab toimuda ainult jagamise käsu täitmisel.
Mis vahe on katkestusel ja erandil?
Katkestused on riistvaralised katkestused, erandid aga tarkvara katkestused. Riistvarakatkestused keelavad tavaliselt muud riistvarakatkestused, kuid see ei kehti erandite puhul. Kui peate riistvarakatkestused keelama kuni erandi esitamiseni, peate katkestuse lipu selgesõnaliselt kustutama. Ja tavaliselt mõjutab arvuti katkestuslipp (riistvara) katkestusi erinevalt eranditest. See tähendab, et selle lipu kustutamine ei välista erandeid.