Controlador d'interrupcions
funció de càlcul activada per una interrupció / From Wikipedia, the free encyclopedia
En la programació de sistemes informàtics, un controlador d'interrupcions, també conegut com a rutina de servei d'interrupció o ISR, també manegador o gestor, és un bloc especial de codi associat a una condició d'interrupció específica. Els controladors d'interrupcions s'inicien per interrupcions de maquinari, instruccions d'interrupció de programari o excepcions de programari i s'utilitzen per implementar controladors de dispositius o transicions entre modes de funcionament protegits, com ara crides al sistema.
La forma tradicional de controlador d'interrupcions és el controlador d'interrupcions de maquinari. Les interrupcions de maquinari sorgeixen de condicions elèctriques o protocols de baix nivell implementats en lògica digital, normalment s'envien mitjançant una taula codificada de vectors d'interrupció, de manera asíncrona al flux d'execució normal (tal com ho permeten els nivells d'emmascarament d'interrupcions), sovint utilitzant una pila separada, i entrant automàticament en un context d'execució diferent (nivell de privilegis) durant la durada de l'execució del controlador d'interrupcions. En general, les interrupcions de maquinari i els seus controladors s'utilitzen per gestionar condicions d'alta prioritat que requereixen la interrupció del codi actual que està executant el processador.[2][3]
Més tard es va trobar convenient que el programari pogués activar el mateix mecanisme mitjançant una interrupció de programari (una forma d'interrupció síncrona). En lloc d'utilitzar una taula de distribució d'interrupcions codificada en dur a nivell de maquinari, les interrupcions de programari sovint s'implementen a nivell de sistema operatiu com una forma de funció de devolució de crida.
Els gestors d'interrupcions tenen multitud de funcions, que varien en funció del que va activar la interrupció i de la velocitat a la qual el gestor d'interrupcions completa la seva tasca. Per exemple, prémer una tecla del teclat d'un ordinador,[4] o moure el ratolí, desencadena interrupcions que criden a controladors d'interrupcions que llegeixen la tecla, o la posició del ratolí, i copien la informació associada a la memòria de l'ordinador.[5] Un controlador d'interrupcions és una contrapartida de baix nivell dels controladors d'esdeveniments. No obstant això, els controladors d'interrupcions tenen un context d'execució inusual, moltes restriccions dures en el temps i l'espai, i la seva naturalesa intrínsecament asíncrona els fa notòriament difícils de depurar per la pràctica estàndard (generalment no existeixen casos de prova reproduïbles), per la qual cosa exigeixen un conjunt d'habilitats especialitzats, un subconjunt important de programació del sistema: d'enginyers de programari que participen a la capa d'interrupció de maquinari.