Keskeytys vs Trap
Missä tahansa tietokoneessa sen normaalin ohjelman suorittamisen aikana saattaa tapahtua tapahtumia, jotka voivat aiheuttaa CPU:n tilapäisen pysähtymisen. Tällaisia tapahtumia kutsutaan keskeytyksiksi. Keskeytykset voivat johtua joko ohjelmisto- tai laitteistovioista. Laitteistokeskeytyksiä kutsutaan (yksinkertaisesti) keskeytyksiksi, kun taas ohjelmistokeskeytyksiä kutsutaan poikkeuksiksi tai ansoiksi. Poikkeus on automaattisesti luotu ohjelmistokeskeytys, kun taas Trap on ohjelmoijan käynnistämä ohjelmiston käynnistämä keskeytys. Kun keskeytys (ohjelmisto tai laitteisto) nostetaan, ohjaus siirretään erityiseen alirutiiniin nimeltä ISR (Interrupt Service Routine), joka pystyy käsittelemään keskeytyksen aiheuttamia ehtoja.
Mikä on keskeytys?
Keskeytys-termi on yleensä varattu laitteistokeskeytyksiä varten. Ne ovat ulkoisten laitteistotapahtumien aiheuttamia ohjelman ohjauksen keskeytyksiä. Tässä ulkoinen tarkoittaa CPU:n ulkoista. Laitteistokeskeytykset 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ä laitteiston keskeytyksiä ei juuri koskaan tapahdu suorittavaan ohjelmaan liittyvän tapahtuman vuoksi. Esimerkiksi tapahtuma, kuten käyttäjän näppäimistön näppäimen painallus tai sisäinen laitteiston ajastimen aikakatkaisu, voi nostaa tällaista keskeytystä ja ilmoittaa CPU:lle, että tietty laite tarvitsee huomiota. Tällaisessa tilanteessa CPU lopettaa tekemänsä (eli keskeyttää nykyisen ohjelman), tarjoaa laitteen tarvitseman palvelun ja palaa normaaliin ohjelmaan. Kun tapahtuu laitteiston keskeytyksiä ja CPU käynnistää ISR:n, muut laitteistokeskeytykset poistetaan käytöstä (esim.g. 80×86 koneissa). Jos tarvitset muita laitteiston keskeytyksiä ISR:n ollessa käynnissä, sinun on tehtävä se nimenomaisesti tyhjentämällä keskeytyslippu (sti-ohjeella). 80×86-koneissa keskeytyslipun tyhjentäminen vaikuttaa vain laitteistokeskeytuksiin.
Mikä on ansa?
A Trap voidaan tunnistaa ohjauksen siirroksi, jonka ohjelmoija käynnistää. Termiä Trap käytetään vaihtokelpoisesti termin Exception (joka on automaattisesti tapahtuva ohjelmistokeskeytys) kanssa. Mutta jotkut saattavat väittää, että ansa on yksinkertaisesti erityinen aliohjelmakutsu. Joten ne kuuluvat ohjelmiston aiheuttamien keskeytysten luokkaan. Esimerkiksi 80×86 koneissa ohjelmoija voi käyttää int-käskyä ansan käynnistämiseen. Koska trap on aina ehdoton, ohjaus siirretään aina trap-aliohjelmaan. Tarkka käsky, joka kutsuu ansan käsittelyrutiinin, on helppo tunnistaa, koska ansan määrittämiseen käytetään eksplisiittistä käskyä.
Mitä eroa on keskeytyksen ja trapin välillä?
Keskeytykset ovat laitteiston keskeytyksiä, kun taas traps ovat ohjelmiston aiheuttamia keskeytyksiä. Laitteistokeskeytykset poistavat yleensä muut laitteistokeskeytykset käytöstä, mutta tämä ei pidä paikkaansa ansojen kohdalla. Jos sinun on kiellettävä laitteistokeskeytykset, kunnes ansa on toimitettu, sinun on tyhjennettävä keskeytyslippu. Ja yleensä tietokoneen keskeytyslippu vaikuttaa (laitteisto)keskeytyksiin eikä ansoihin. Tämä tarkoittaa, että tämän lipun poistaminen ei estä ansoja. Toisin kuin traps, keskeytysten tulee säilyttää CPU:n edellinen tila.