Keskeytä vs Trap
Missä tahansa tietokoneessa ohjelman normaalin suorituksen aikana voi tapahtua tapahtumia, jotka voivat aiheuttaa CPU: n tilapäisen pysähtymisen. Tämän tyyppisiä tapahtumia kutsutaan keskeytyksiksi. Keskeytykset voivat johtua joko ohjelmisto- tai laitteistovirheistä. Laitteiston keskeytyksiä kutsutaan (yksinkertaisesti) keskeytyksiksi, kun taas ohjelmistokatkoksia kutsutaan poikkeuksiksi tai ansoiksi. Poikkeus on automaattisesti luotu ohjelmistokatko, kun taas Trap on ohjelmoijan käynnistämä keskeytys, jonka ohjelmoija aloittaa. Kun keskeytys (ohjelmisto tai laitteisto) on nostettu, ohjaus siirretään erityiseen aliohjelmaan, nimeltään ISR (Interrupt Service Routine), joka pystyy käsittelemään keskeytyksen aiheuttamat olosuhteet..
Mikä on keskeytys?
Termi Interrupt on yleensä varattu laitteistokatkoksille. Ne ovat ulkoisten laitteistotapahtumien aiheuttamia ohjelmanhallinnan keskeytyksiä. Tässä CPU: n ulkopuoliset välineet. Laitteiston keskeytykset tulevat yleensä monista eri lähteistä, kuten ajastinpiiri, 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 suorittavan ohjelman yhteydessä tapahtuneiden tapahtumien takia. Esimerkiksi tapahtuma, kuten käyttäjän näppäimistön painallus tai sisäisen laitteiston ajastimen aikakatkaisu, voi lisätä tällaista keskeytystä ja voi ilmoittaa prosessorille, että tietty laite tarvitsee jonkin verran huomiota. Tällaisessa tilanteessa CPU lopettaa kaiken tekemänsä (ts. Keskeyttää nykyisen ohjelman), tarjoaa laitteen vaatiman palvelun ja palaa normaaliin ohjelmaan. Kun laitteistohäiriöitä tapahtuu ja CPU käynnistää ISR: n, muut laitteistokeskeytykset poistetaan käytöstä (esim. 80 × 86 koneessa). Jos tarvitset muita laitteistohäiriöitä tapahtumaan ISR: n ollessa käynnissä, sinun on tehtävä se nimenomaisesti poistamalla keskeytyslippu ( sti ohje). 80 × 86 -laitteissa keskeytyslipun poistaminen vaikuttaa vain laitteistokatkoksiin.
Mikä on ansa?
Loukku voidaan tunnistaa ohjauksen siirroksi, jonka ohjelmoija aloittaa. Termiä Trap käytetään vuorottelevasti termin Exception (joka on automaattisesti tapahtuva ohjelmistokatkoksen) kanssa. Mutta jotkut saattavat väittää, että ansa on yksinkertaisesti erityinen aliohjelman kutsu. Joten ne kuuluvat ohjelmistoon kutsuttujen keskeytysten luokkaan. Esimerkiksi 80 × 86 -koneissa ohjelmoija voi käyttää int ohje ansaan aloittamiseksi. Koska ansa on aina ehdoton, ohjaus siirretään aina ansaan liittyvään aliohjelmaan. Tarkka käsky, joka vetoaa ansaan käsittelyrutiiniin, on helposti tunnistettavissa, koska loukun määrittämiseen käytetään nimenomaista käskyä.
Mitä eroa Interrupt- ja Trap-välillä on??
Keskeytykset ovat laitteistokeskeytyksiä, kun taas loukut ovat ohjelmistopohjaisia keskeytyksiä. Laitteistohäiriöiden esiintymiset yleensä poistavat käytöstä muut laitteistokeskeytykset, mutta tämä ei pidä paikkaansa ansoja. Jos joudut kieltämään laitteistokeskeytykset, kunnes ansa annetaan, sinun on poistettava keskeytyslippu selvästi. Ja yleensä tietokoneen keskeytyslippu vaikuttaa (laitteisto) keskeytyksiin kuin ansoihin. Tämä tarkoittaa, että tämän lipun poistaminen ei estä ansoja. Toisin kuin ansoja, keskeytyksien tulisi säilyttää CPU: n aikaisempi tila.