La interrupción es una señal emitida por hardware o software cuando un proceso o un evento necesita atención inmediata. Alerta al procesador sobre un proceso de alta prioridad que requiere la interrupción del proceso de trabajo actual. En los dispositivos de E/S, una de las líneas de control del bus está dedicada a este propósito y se denomina Rutina de servicio de interrupción (ISR) .
Cuando un dispositivo genera una interrupción en, digamos, el proceso i, el procesador primero completa la ejecución de la instrucción i. Luego carga el Contador de Programa (PC) con la dirección de la primera instrucción del ISR. Antes de cargar el contador de programa con la dirección, la dirección de la instrucción interrumpida se mueve a una ubicación temporal. Por lo tanto, después de manejar la interrupción, el procesador puede continuar con el proceso i+1.
Mientras el procesador maneja las interrupciones, debe informar al dispositivo que su solicitud ha sido reconocida para que deje de enviar la señal de solicitud de interrupción. Además, guardar los registros para que el proceso interrumpido pueda ser restaurado en el futuro, aumenta la demora entre el momento en que se recibe una interrupción y el inicio de la ejecución de la ISR. Esto se llama latencia de interrupción.
Interrupciones de hardware:
En una interrupción de hardware, todos los dispositivos están conectados a la línea de solicitud de interrupción. Se utiliza una sola línea de solicitud para todos los n dispositivos. Para solicitar una interrupción, un dispositivo cierra su interruptor asociado. Cuando un dispositivo solicita una interrupción, el valor de INTR es el OR lógico de las requests de dispositivos individuales.
La secuencia de eventos involucrada en el manejo de una IRQ:
- Los dispositivos generan una IRQ.
- El procesador interrumpe el programa que se está ejecutando actualmente.
- Se informa al dispositivo que su solicitud ha sido reconocida y el dispositivo desactiva la señal de solicitud.
- Se realiza la acción solicitada.
- Se habilita una interrupción y se reanuda el programa interrumpido.
Manejo de múltiples dispositivos:
Cuando más de un dispositivo emite una señal de solicitud de interrupción, se necesita información adicional para decidir qué dispositivo se considerará primero. Los siguientes métodos se utilizan para decidir qué dispositivo seleccionar: sondeo, interrupciones vectoriales y anidamiento de interrupciones. Estos se explican a continuación a continuación.
- Sondeo: En el sondeo, el primer dispositivo que se encuentra con el bit IRQ establecido es el dispositivo que se va a reparar primero. Se llama al ISR apropiado para dar servicio al mismo. Es fácil de implementar pero se pierde mucho tiempo interrogando el bit IRQ de todos los dispositivos.
- Interrupciones vectoriales: en las interrupciones vectoriales, un dispositivo que solicita una interrupción se identifica directamente enviando un código especial al procesador a través del bus. Esto permite que el procesador identifique el dispositivo que generó la interrupción. El código especial puede ser la dirección de inicio de la ISR o donde se encuentra la ISR en la memoria y se denomina vector de interrupción.
- Anidamiento de interrupciones: en este método, el dispositivo de E/S se organiza en una estructura de prioridad. Por lo tanto, se reconoce una solicitud de interrupción de un dispositivo de mayor prioridad mientras que no se reconoce una solicitud de un dispositivo de menor prioridad. El procesador acepta interrupciones solo de dispositivos/procesos que tienen prioridad.
La prioridad de los procesadores está codificada en unos pocos bits de PS (registro de estado del proceso). Se puede cambiar mediante instrucciones de programa que se escriben en el PS. El procesador está en modo supervisado solo mientras ejecuta las rutinas del sistema operativo. Cambia al modo de usuario antes de ejecutar los programas de aplicación.
Publicación traducida automáticamente
Artículo escrito por lemilxavier y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA