Una interrupción es un evento "inusual" que ocurre que debe procesarse de inmediato , independientemente de lo que esté sucediendo. Digo "inusual" entre comillas, porque no son necesariamente inesperadas o malas, sino "inusuales" desde el punto de vista de la CPU porque "simplemente suceden" mientras está ocupado ejecutando código que puede no estar relacionado.
La CPU tiene algún mecanismo para escuchar las interrupciones, y alguna forma de configurar "qué hacer" cuando ocurren interrupciones de varios tipos. Esto permite al sistema operativo organizar que se le notifique cuando los dispositivos de hardware hacen cosas (incluido el reloj de hardware más importante, que simplemente genera interrupciones a intervalos regulares). A través de la configuración de manejo de interrupciones de la CPU, el código designado en el sistema operativo obtendrá el control cada vez que ocurran interrupciones.
La computadora está en un estado muy desagradable (para un programador de aplicaciones) cuando comienza a ejecutarse un controlador de interrupciones; la máquina estaba ocupada haciendo otra cosa (que podría ser cualquier cosa ) y ahora se le ha notificado al sistema operativo que "algo ha sucedido". Tiene que recopilar cualquier otra información necesaria para manejar la interrupción desde cualquier parte de la máquina en la que debería estar y hacer el procesamiento necesario sin molestar que "podría ser cualquier cosa" que se estaba ejecutando en la CPU. Si el sistema operativo desea cambiar qué proceso de aplicación se está ejecutando actualmente, tendrá que guardar suficiente contexto para poder restaurarlo más tarde (nuevamente, sin alterar ese contexto), luego cargar algún otro contexto y luego dejar que la CPU se reanude normalmente ejecución en ese contexto.
Como se mencionó, las interrupciones se usan para recibir notificaciones de dispositivos de hardware (la única alternativa sería verificarlas periódicamente), realizar un seguimiento del tiempo y obtener la oportunidad garantizada de recuperar el control de un proceso de aplicación (para cambiar qué aplicación se está ejecutando) , recuperarse de los procesos de la aplicación ejecutando instrucciones no válidas, y también para permitir que las aplicaciones realicen solicitudes del sistema operativo. Estas últimas se conocen como llamadas al sistema. Para evitar que las aplicaciones estropeen la máquina y entre sí, normalmente se ejecutan con la máquina en "modo de usuario", lo que impide que la aplicación haga básicamente algo más que leer y escribir memoria (virtual) ya asignada. Esto significa que hacer cualquier cosade lo contrario (leer / escribir archivos, pedir más memoria, acceder a dispositivos, etc.), la aplicación debe realizar una llamada al sistema; básicamente lo hace dejando algo de información sobre lo que quiere hacer en algún lugar que sepa que el sistema operativo lo buscará, luego ejecuta una instrucción de CPU que causa una interrupción del tipo correcto. El sistema operativo puede ver lo que la aplicación estaba tratando de hacer y determinar si debía llevar a cabo esa solicitud. Esta garantía de que el sistema operativo estará involucrado en cualquier intento de proceso de hacer algo que afecte cualquier cosa fuera del proceso es la única forma en que se pueden hacer cumplir las políticas de acceso.
Entonces, esencialmente, sí, el sistema operativo es impulsado por interrupciones. Un sistema operativo "abstracto" inicia la máquina en un estado de "operación normal" y en algún momento deja el control a un proceso "normal". En circunstancias normales, el sistema operativo solo recuperará el control manejando las interrupciones; pero como casi nada interesante sucede sin una interrupción, el sistema operativo básicamente tiene el control de todo todo el tiempo.