Keskeyttää

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 27. huhtikuuta 2022 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Keskeytys on yksi tietotekniikan peruskäsitteitä , joka piilee siinä, että tapahtuman sattuessa ohjaus siirretään erityiseen proseduuriin nimeltä keskeytyskäsittelijä (ISR, eng.  Interrupt Service Routine ) [1] . Toisin kuin ehdolliset ja ehdottomat hyppyt, keskeytys voidaan kutsua missä tahansa ohjelmassa, myös jos ohjelman suoritus on keskeytetty, ja sen aiheuttavat yleensä ohjelman ulkopuoliset tapahtumat. Tehtyään tarvittavat toimenpiteet keskeytyskäsittelijä pääsääntöisesti palauttaa ohjauksen keskeytetylle ohjelmalle [2] .

Tapaaminen

Pääsääntöisesti keskeytyksiä käytetään oheislaitteiden kanssa toimimiseen. Sinun on esimerkiksi lähetettävä pyyntö ladata tietoja levyltä muistiin ja latauksen aikana suoritettava joitain muita toimintoja tai pysäytettävä suoritus, kunnes keskeytys vastaanotetaan, ja kun lataus on valmis, siirry keskeytyskäsittelijään. joka alkaa käsitellä saapuvia tietoja [1] . Keskeytysten avulla voidaan toteuttaa myös moniajo , ohjelman virheenkorjaus , tiettyjen laitteiden emulointi jne .

Laji

Keskeytyssignaalin lähteestä riippuen ne jaetaan:

Termiä "trap" ( englanniksi  trap ) käytetään joskus synonyyminä termille "keskeytys" tai "sisäinen keskeytys". Pääsääntöisesti käyttö on määritetty tietyn prosessoriarkkitehtuurin valmistajan dokumentaatiossa.

Masking

Ulkoiset keskeytykset jaetaan kieltomahdollisuudesta riippuen:

Keskeytyskäsittelijät on yleensä kirjoitettu niin, että niiden käsittelyaika on mahdollisimman lyhyt, koska muita keskeytyksiä ei voida käsitellä niiden toiminnan aikana, ja jos niitä on paljon (etenkin yhdestä lähteestä), ne voivat kadota. Windows käyttää viivästettyjen menettelyjen kutsumekanismia tähän .

Priorisointi

Keskeytyksen käsittelyn loppuun asti tämän tyyppisten keskeytysten käsittelylle asetetaan yleensä kielto, jotta prosessori ei mene yhden keskeytyksen käsittelyjaksoon. Priorisointi tarkoittaa, että kaikki keskeytyslähteet on jaettu luokkiin ja jokaiselle luokalle on määritetty oma keskeytyspyyntöjen prioriteettitaso [3] .

Keskeytä taulukko

Keskeytysvektori  on laitteen antama numero, joka tunnistaa vastaavan keskeytyskäsittelijän. Keskeytysvektorit yhdistetään keskeytysvektoritaulukoksi, joka sisältää keskeytyskäsittelijöiden osoitteet [4] . Taulukon sijainti riippuu prosessorin tyypistä ja toimintatilasta.

Läpinäkyvyys

Oletetaan, että keskeytyksen tulee tarjota läpinäkyvyyttä - eli keskeytyksen tarkoituksen perusteella muutettavia tietoja lukuun ottamatta, keskeytyksen käsittelyn päätyttyä prosessori on palautettava samaan tilaan, jossa se oli kutsun aikaan [5] . Yksinkertaisimmassa tapauksessa riittää, että kaikkien prosessorirekisterien tila tallennetaan pinoon.

Ohjelmiston keskeytys

Ohjelmistokeskeytys on synkroninen keskeytys, jonka ohjelma voi toteuttaa erityiskäskyn avulla.

x86 - prosessoreissa synkronisen keskeytyksen nimenomaan kutsumiseksi on käskyInt , jonka argumentti on keskeytyksen numero (0 - 255). IBM PC -yhteensopivissa tietokoneissa ROM -muistiin tallennetut BIOS - rutiinit käsittelevät jotkin keskeytykset , ja keskeytys toimii käyttöliittymänä BIOSin tarjoaman palvelun käyttämiseen. Myös laajennuskorttien BIOS (esimerkiksi verkko- tai näytönohjain ), käyttöjärjestelmä ja jopa tavalliset (sovellus)ohjelmat voivat huoltaa keskeytyksiä, jotka ovat jatkuvasti muistissa muiden ohjelmien ollessa käynnissä (ns. pysyvät ohjelmat ). ). Toisin kuin reaalitilassa , x86-suorittimien suojatussa tilassa tavalliset ohjelmat eivät voi palvella keskeytyksiä, tämä toiminto on vain järjestelmäkoodin (käyttöjärjestelmän) käytettävissä.

MS-DOS käyttää keskeytyksiä numeroituina 20h - 3Fh ollakseen vuorovaikutuksessa sen moduulien ja sovellusohjelmien kanssa (numerot annetaan heksadesimaalimuodossa , kuten on tavallista ohjelmoitaessa x86 - kokoonpanokielellä ). Esimerkiksi pääsy MS-DOS-funktioiden pääjoukkoon suoritetaan suorittamalla käsky Int 21h(tässä tapauksessa funktion numero ja sen argumentit siirretään rekistereissä ). Tämä keskeytysnumeroiden allokointi ei ole kiinteää, ja muut ohjelmat voivat asentaa omia keskeytyskäsittelijöitä MS-DOS:n tai muiden ohjelmien asentamien käsittelijöiden sijasta tai päälle, mitä yleensä käytetään toimintojen muuttamiseen tai järjestelmän toimintojen luettelon laajentamiseen. Myös virukset käyttävät tätä mahdollisuutta hyväkseen .

Muistiinpanot

  1. 1 2 Tanenbaum, 2018 , s. 452.
  2. Pogorely, 1989 , s. 56.
  3. Tanenbaum, 2018 , s. 454 = 456.
  4. Tanenbaum, 2018 , s. 453.
  5. Tanenbaum, 2018 , s. 454.

Kirjallisuus