Megszakítás

A HupWiki-ből...

A megszakítások használatával a processzor-hoz kapcsolódó elektronikus eszközök a müködésük során bekövetkező eseményekről úgy értesíthetik a processzort, hogy annak nem kell aktívan várakozva figyelnie (pollozás) az eszközt. Így a processzor gyorsan reagálhat külső eseményekre, de közben más feladatokat is végrehajthat. A megszakításokat elsősorban időzítési feladatok, illetve be-/kiviteli folyamatok megvalósításában alkalmazzák.

Az eszközök az eseményeket megszakítási kérelemmel (IRQ) jelzik. Amikor a processzor észleli az IRQ-t, a verembe menti az aktuális végrehajtási állapotot (kontextus), majd átadja a vezérlést a megszakítást kiszolgáló alprogramnak, a megszakításkezelőnek. Ennek befejezése után a korábban elmentett állapotot visszatölti, majd folytatja a megszakított feldolgozási müveletet.

A megszakításkezelők gyorsan végrehajtódó alprogramok, amik az aktuális feladatot nem hátráltathatják számottevően. Csak a legszükségesebb teendőket hajtják végre, a hosszabb ideig tartó feladatokat általában későbbi végrehajtásra ütemezik. A megszakításokat általában nem szakíthatják meg újabb megszakítások, mivel a kontextusok adatait a veremben tárolják, az ismételt megszakítások nemkívánatos veremtúlcsorduláshoz vezethetnének. A megszakításkezelők címét (megszakításvektor) általában előre meghatározott memóriaterületen tárolják.

Egyes processzorok különböző prioritású megszakításokat tesznek lehetővé. Elterjedt megoldás, hogy a megszakítások végrehajtását megszakítási maszk segítségével engedélyezik vagy tiltják. Ekkor minden megszakításhoz tartozik egy vagy több bit a megszakítási maszkban. A beérkező IRQ-t logikai ÉS művelettel összehasonlítják a maszkkal, és az eredménynek megfelelően kerülhet végrehajtásra vagy elutasításra.

Már az 1960-as években, például az IBM 709-es számítógépeken is alkalmaztak megszakításrendszert. Frederick Brooks és Dura Sweeney 1957-ben szabadalmaztatott egy, a mai megszakításrendszerekre hasonlító eljárást.


FIXME