Keskeytys vs. poikkeus
Missä tahansa tietokoneessa ohjelman normaalin suorituksen aikana voi olla tapahtumia, jotka voivat aiheuttaa CPU: n väliaikaisen pysähtymisen. Tällaisia tapahtumia kutsutaan keskeytyksiksi. Keskeytykset voivat johtua joko ohjelmisto- tai laitevioista. Laitteiston keskeytyksiä kutsutaan (yksinkertaisesti) keskeytyksiksi, kun taas ohjelmiston keskeytyksiä kutsutaan poikkeuksiksi. Kun keskeytys (ohjelmisto tai laitteisto) on nostettu, ohjaus siirretään erityiseen alirutiiniin nimeltä ISR (Interrupt Service Routine), joka pystyy käsittelemään keskeytyksen aiheuttamat olosuhteet.
Mikä on keskeytys?
Termi Keskeytys on yleensä varattu laitteiston keskeytyksille. Ne ovat ulkoisten laitteistotapahtumien aiheuttamia ohjelman hallinnan keskeytyksiä. Tässä ulkoinen tarkoittaa prosessorin ulkoista. Laitteiden keskeytykset tulevat yleensä monista eri lähteistä, kuten ajastinsiru, oheislaitteet (näppäimistöt, hiiri jne.), I / O-portit (sarja, rinnakkais jne.), Levyasemat, CMOS-kello, laajennuskortit (äänikortti, video) kortti jne.). Tämä tarkoittaa, että laitteistokatkoksia ei tapahdu melkein koskaan johtuen jonkin suorittavaan ohjelmaan liittyvästä tapahtumasta. Esimerkiksi tapahtuma, kuten käyttäjän näppäimistön painallus, tai sisäinen laitteistoajastimen aikakatkaisu voi aiheuttaa tällaisen keskeytyksen ja ilmoittaa keskusyksikölle, että tietty laite tarvitsee jonkin verran huomiota. Tällaisessa tilanteessa CPU lopettaa kaiken tekemänsä (ts. Keskeyttää nykyisen ohjelman),tarjoaa laitteen edellyttämän palvelun ja palaa normaaliin ohjelmaan. Kun laitteistokeskeytyksiä tapahtuu ja keskusyksikkö käynnistää ISR: n, muut laitteistokeskeytykset poistetaan käytöstä (esim. 80 × 86-koneissa). Jos tarvitset muita laitteistokatkoksia ISR: n ollessa käynnissä, sinun on tehtävä se nimenomaisesti tyhjentämällä keskeytyslippu (sti-käskyllä). 80 × 86-koneissa keskeytyslipun tyhjentäminen vaikuttaa vain laitteiston keskeytyksiin.keskeytyslipun tyhjentäminen vaikuttaa vain laitteiston keskeytyksiin.keskeytyslipun tyhjentäminen vaikuttaa vain laitteiston keskeytyksiin.
Mikä on poikkeuksia?
Poikkeus on ohjelmiston keskeytys, joka voidaan tunnistaa erityiseksi käsittelijän rutiiniksi. Poikkeus voidaan tunnistaa automaattisesti tapahtuvaksi ansaksi (ansan voidaan tunnistaa ohjauksen siirtona, jonka ohjelmoija aloittaa). Yleensä poikkeuksiin ei liity erityisiä ohjeita (ansat luodaan tietyn käskyn avulla). Joten poikkeus johtuu "poikkeuksellisesta" ehdosta, joka tapahtuu ohjelman suorituksen aikana. Esimerkiksi jakaminen nollalla, laittoman opkoodin suorittaminen tai muistiin liittyvä vika voi aiheuttaa poikkeuksia. Aina kun poikkeus nousee, CPU keskeyttää väliaikaisesti suorittamansa ohjelman ja käynnistää ISR: n. ISR sisältää mitä tehdä lukuun ottamatta. Se voi korjata ongelman tai jos se ei ole mahdollista, se voi keskeyttää ohjelman sulavasti tulostamalla sopivan virhesanoman. Vaikka tietty käsky ei aiheuta poikkeusta, poikkeuksen aiheuttaa aina käsky. Esimerkiksi jakaminen nollavirheellä voi tapahtua vain jako-käskyn suorittamisen aikana.
Mitä eroa on keskeytyksellä ja poikkeuksella?
Keskeytykset ovat laitteistokatkoksia, kun taas poikkeukset ovat ohjelmistokatkoksia. Laitteiden keskeytysten esiintyminen poistaa yleensä muut laitteistokatkokset käytöstä, mutta tämä ei päde poikkeuksiin. Jos sinun on kiellettävä laitteiston keskeytykset, kunnes poikkeus on annettu, sinun on nimenomaisesti tyhjennettävä keskeytyslippu. Ja yleensä tietokoneen keskeytyslippu vaikuttaa (laitteisto) keskeytyksiin poiketen poikkeuksista. Tämä tarkoittaa, että tämän lipun tyhjentäminen ei estä poikkeuksia.