Järjestelmän puhelu vs. keskeytys
Tyypillinen prosessori suorittaa ohjeet yksitellen. Mutta voi olla tilanteita, joissa prosessorin on pysäytettävä väliaikaisesti ja pidettävä voimassa olevaa ohjetta ja suoritettava jokin muu ohjelma tai koodisegmentti (asuu jossakin muussa paikassa). Tämän jälkeen prosessori palaa normaaliin suoritukseen ja jatkaa siitä, mihin se jäi. Järjestelmäkutsu ja keskeytys ovat tällaisia tilanteita. Järjestelmäkutsu on kutsu järjestelmään sisäänrakennetulle aliohjelmalle. Keskeytys on ulkoisten laitteistotapahtumien aiheuttama ohjelman hallinnan keskeytys.
Mikä on järjestelmäkutsu?
Järjestelmäpuhelut tarjoavat tietokoneella käynnissä oleville ohjelmille käyttöliittymän keskustelemaan käyttöjärjestelmän kanssa. Kun ohjelman on kysyttävä palvelua (jolle sillä ei itse ole lupaa) käyttöjärjestelmän ytimeltä, se käyttää järjestelmäkutsua. Käyttäjätason prosesseilla ei ole samoja käyttöoikeuksia kuin prosesseilla, jotka ovat suoraan vuorovaikutuksessa käyttöjärjestelmän kanssa. Esimerkiksi yhteydenpitoon ulkoisen I / O-laitteen kanssa tai vuorovaikutukseen muiden prosessien kanssa ohjelman on käytettävä järjestelmäkutsuja.
Mikä on keskeytys?
Tietokoneohjelman normaalin suorituksen aikana saattaa olla tapahtumia, jotka voivat aiheuttaa CPU: n väliaikaisen pysähtymisen. Tällaisia tapahtumia kutsutaan keskeytyksiksi. Keskeytykset voivat johtua joko ohjelmisto- tai laitevioista. Laitteiden keskeytyksiä kutsutaan (yksinkertaisesti) keskeytyksiksi, kun taas ohjelmistojen keskeytyksiä kutsutaan poikkeuksiksi tai ansiksi. 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.
Kuten edellä mainittiin, termi Keskeytys on yleensä varattu laitteistokatkaisuille. 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.
Mitä eroa on järjestelmäkutsulla ja keskeytyksellä?
Järjestelmäkutsu on kutsu järjestelmään sisäänrakennetulle aliohjelmalle, kun taas Keskeytys on tapahtuma, joka saa prosessorin väliaikaisesti pitämään nykyisen suorituksen. Yksi merkittävä ero on kuitenkin se, että järjestelmäpuhelut ovat synkronisia, kun taas keskeytykset eivät. Tämä tarkoittaa, että järjestelmäkutsut tapahtuvat kiinteänä ajankohtana (yleensä ohjelmoijan määrittämä), mutta keskeytyksiä voi tapahtua milloin tahansa odottamattoman tapahtuman, kuten käyttäjän näppäimistön painalluksen, vuoksi. Siksi aina, kun järjestelmäkutsu tapahtuu, prosessorin on vain muistettava minne palata, mutta keskeytyksen sattuessa prosessorin on muistettava sekä paluupaikka että järjestelmän tila. Toisin kuin järjestelmäkutsu, keskeytyksellä ei yleensä ole mitään tekemistä nykyisen ohjelman kanssa.