Un controlador de interrupción de prioridad tiene cierta funcionalidad básica que comparte prácticamente todo este tipo (como se señaló, ciertos detalles varían según el dispositivo).
Un ejemplo de un tipo podría ser útil.
Digamos que tengo un controlador de prioridad con 3 niveles, A, B y C y que el orden de prioridad es A más alto, B a continuación, C más bajo y cada uno ha sido asignado a un evento en particular (tal vez temporizadores, tal vez un estado de pin) cambio)
Lo que posiblemente podría suceder es esto:
Se produce la interrupción C; Como actualmente no hay ninguna otra interrupción pendiente, se toma el vector de interrupción.
Antes el controlador de interrupciones para C se completa, se produce la interrupción A; el controlador de interrupción para C se suspende y se toma el vector de interrupción para la interrupción A (porque la interrupción A tiene una prioridad más alta).
Antes del controlador de interrupciones para el acabado A, se produce la interrupción B; el controlador de interrupción para la interrupción A continúa (porque B tiene una prioridad más baja) hasta que se completa y la ejecución vuelve al controlador de interrupción C (porque ahí es donde estaba el procesador cuando se produjo la interrupción A).
El vector de interrupción se toma inmediatamente para la interrupción B (porque tiene una prioridad más alta que la interrupción C) y completa el controlador.
La ejecución ahora vuelve a interrumpir el controlador C, que ahora puede completarse (suponiendo que ninguna de las otras dos interrupciones ocurra en ese momento).
Este es solo un tipo de arquitectura de controlador, pero puede darle una idea de lo que hacen estas cosas.