Keskeytys tietotekniikassa: miten prosessorin keskeytykset toimivat?

Opas keskeytyksiin tietotekniikassa: miten prosessorin keskeytykset toimivat, miksi ne syntyvät ja miten ne hallitaan reaaliaikaisissa järjestelmissä.

Tekijä: Leandro Alegsa

Keskeytys on tilanne, jossa mikroprosessori tekee jotain, mitä sen ei ole käsketty tehdä, koska ohjelman ulkopuolella tapahtuu asioita, joita sen ei pitäisi tehdä. Keskeytykset tapahtuvat useimmiten siksi, että prosessori saa signaalin laitteistosta, mutta ne voivat tulla myös ohjelman kanssa suoritettavasta ohjelmistosta. Keskeytyksiä voivat aiheuttaa muun muassa näppäimistön näppäinten painaminen, sisäänrakennetun ajastimen käynnistyminen, tiedonsiirto tai mikä tahansa muu tapahtuma, joka vaatii prosessorilta toimintaa välittömästi. Keskeytyksiä voi tapahtua milloin tahansa prosessorin suorittaessa ohjelmaa, riippumatta siitä, missä kohtaa ohjelman lähdekoodia se on.

Miten keskeytys toimii käytännössä

Yksinkertaistettuna keskeytyksen käsittelyprosessi etenee tyypillisesti näin:

  • Keskeytyssignaali saapuu laitteistosta tai ohjelmistosta.
  • Prosessori lopettaa väliaikaisesti nykyisen suoritettavan koodin ja tallentaa suoritustilansa (rekisterit, ohjelmalaskurin arvo jne.).
  • Prosessori selvittää, mikä keskeytys on tullut (esim. lukemalla interrupt vector -taulusta).
  • Suoritetaan keskeytyspalvelurin (ISR, Interrupt Service Routine) koodi, joka hoitaa tarvittavat toimenpiteet.
  • Palautetaan tallennettu suoritustila ja jatketaan keskeytystä edeltänyttä ohjelmaa.

Keskeytysten tyypit

  • Laitteistokeskeytykset (hardware interrupts) — tulevat esimerkiksi näppäimistöstä, hiirestä, verkosta, DMA-ohjaimesta tai ajastimelta.
  • Ohjelmistokeskeytykset (software interrupts) — kutsutaan suoraan ohjelmasta, esimerkiksi järjestelmäkutsujen tai virhetilanteiden yhteydessä.
  • Poikkeamat (exceptions) — suorituksen aikana tapahtuvat virheet kuten nollalla jako, sivunohjaus (page fault) tai käskyvirhe.
  • Maskattavat ja maskaamattomat — joitain keskeytyksiä voidaan väliaikaisesti estää (maskata), kun taas kriittiset, kuten NMI (Non-Maskable Interrupt), eivät ole estettävissä.

Keskeytyksiin liittyviä käsitteitä

  • ISR (Interrupt Service Routine) — keskeytyskäsittelijä, joka hoitaa tapahtuman vaatimat toimet.
  • Interrupt vector / taulukko — taulukko, joka kertoo, mihin muistiosoitteeseen mennään kunkin keskeytyksen kohdalla.
  • Prioriteetit ja niputus — useita keskeytyksiä voidaan priorisoida; jotkin arkkitehtuurit sallivat keskeytysten pinoutumisen (nesting).
  • Latency ja determinismi — keskeytyksen aiheuttama viive (latency) on tärkeä erityisesti reaaliaikajärjestelmissä; järjestelmä pitää suunnitella, jotta vasteet ovat ennakoitavia.
  • Interrupt controller — laite (esim. PIC tai APIC), joka hallinnoi, suodattaa ja reitittää keskeytyksiä prosessorille.

Esimerkkejä ja käytännön vaikutuksia

  • Näppäimistön painallus aiheuttaa keskeytyksen, jolloin käyttöjärjestelmä lukee näppäimen tilan ja välittää sen sovellukselle.
  • Ajastinkeskeytys antaa käyttöjärjestelmälle mahdollisuuden vaihtaa säikeitä ja hallita aikajakoista suorittamista.
  • Verkkokortti lähettää keskeytyksen saapuessaan uutta dataa: ISR siirtää datan välimuistiin ja ilmoittaa korkeammalle ohjelmistokerrokselle.

Ohjelmointi ja suunnittelu

Keskeytyksiä käsiteltäessä on tärkeää pitää ISR:t mahdollisimman lyhyinä ja tehokkaina. Pitkät toiminnot on siirrettävä eteenpäin esimerkiksi laittamalla työ jonoon ja jatkamalla varsinaista käsittelyä käyttöjärjestelmän kontekstissa. Lisäksi täytyy huolehtia synkronoinnista, sillä ISR:t voivat muuttaa jaetun tilan arvoja kesken muiden säikeiden tai pääohjelman toiminnan.

Yhteenveto

Keskeytykset ovat keskeinen tapa, jolla laitteisto ja ohjelmisto voivat reagoida nopeasti ulkoisiin tapahtumiin. Ne mahdollistavat tehokkaan resurssien käytön ja reaaliaikaisen reagoinnin, mutta vaativat huolellista suunnittelua: keskeytyskäsittelijät tulee pitää lyhyinä, prioriteetit määrittää oikein ja deterministisyys varmistaa, jos järjestelmässä on reaaliaikavaatimuksia.

Tämä kaavio näyttää, mitä tapahtuu, kun keskeytystä kutsutaan.Zoom
Tämä kaavio näyttää, mitä tapahtuu, kun keskeytystä kutsutaan.

Miten keskeytykset toimivat

Laitteisto- tai ohjelmistokutsu keskeytykseen (tunnetaan nimellä keskeytyspyyntö tai IRQ) hoidetaan prosessorin keskeytyksen käsittelijällä tai keskeytyspalvelurutiinilla (ISR). Se laittaa pinoon sen, mitä se sillä hetkellä tekee, ja seuraa sitten tiettyjä ohjeita, jotka tekevät järjestelmän puolesta tietyn tehtävän, jonka ei tarvitse olla osa sen tekemää ohjelmaa. Kun ISR on noudattanut ohjeita, se ottaa takaisin pinoon laittamansa tiedot ja jatkaa sitä, mitä se teki ennen keskeytystä.

Monet nykyisten prosessoreiden keskeytysohjaimet käyttävät keskeytysvektoria muun muassa keskeytysten lajitteluun sen perusteella, mistä ne ovat peräisin. Vektori sisältää yleensä koodin, joka on suoritettava keskeytyksen tapahtuessa. ISR:t ovat yleensä vastuussa keskeytyksen käsittelystä eli "palvelemisesta" sekä itsensä pitämisestä toimintakunnossa.

Keskeytysten käyttö

  • Tehtävien käynnistäminen säännöllisin väliajoin
  • Ulkoisen laitteen huolto, joka voi tapahtua milloin tahansa.
  • Poistaa synkronisen kyselyn tarpeen
  • Käyttöjärjestelmän (OS) aktivoiminen toimintaan

Kysymyksiä ja vastauksia

K: Mikä on keskeytys?


V: Keskeytys on mikroprosessorin suorittama toimenpide, joka ei ole osa suoritettavaa ohjelmaa ulkoisten tapahtumien vuoksi.

K: Mikä aiheuttaa keskeytyksiä useimmiten prosessorissa?


V: Keskeytyksiä esiintyy prosessorissa useimmiten laitteistosignaalien vastaanottamisen vuoksi.

K: Voivatko keskeytykset johtua ohjelmistosta?


V: Kyllä, keskeytyksiä voivat aiheuttaa myös ohjelmistot, jotka suoritetaan suoritettavan ohjelman rinnalla.

K: Luettele muutamia esimerkkejä tapahtumista, jotka voivat aiheuttaa keskeytyksen.
V: Esimerkkejä tapahtumista, jotka voivat aiheuttaa keskeytyksen, ovat näppäimistön näppäinten painaminen, ajastimen käynnistyminen ja tiedonsiirto.

K: Riippuuko keskeytys siitä, missä ohjelma suoritetaan?


V: Ei, keskeytyksiä voi esiintyä milloin tahansa ohjelman suorituksen aikana riippumatta siitä, missä vaiheessa ohjelman lähdekoodi on.

K: Onko keskeytys mikroprosessorin kannalta toivottava tapahtuma?


V: Keskeytykset ovat yleensä mikroprosessorin kannalta ei-toivottuja tapahtumia, koska ne häiritsevät ohjelman suoritusta ja vaativat välitöntä huomiota.

K: Miten mikroprosessori reagoi keskeytykseen?


V: Mikroprosessori keskeyttää väliaikaisesti suoritettavan ohjelman ja suorittaa keskeytyspalvelurutiinin (ISR) keskeytyksen käsittelemiseksi ennen kuin se palaa suoritettavaan ohjelmaan.


Etsiä
AlegsaOnline.com - 2020 / 2025 - License CC3