En la interfaz de E/S (modo de interrupción y DMA), hemos discutido el concepto detrás de la E/S iniciada por interrupción. En resumen, cuando los dispositivos de E/S están listos para la transferencia de E/S, generan una señal de solicitud de interrupción a la computadora. La CPU recibe esta señal, suspende las instrucciones actuales que está ejecutando y luego avanza para dar servicio a esa solicitud de transferencia. Pero, ¿qué pasa si varios dispositivos generan interrupciones simultáneamente? En ese caso, tenemos una forma de decidir qué interrupción se atenderá primero. En otras palabras, tenemos que establecer una prioridad entre todos los dispositivos para el servicio de interrupción sistémica. El concepto de definir la prioridad entre dispositivos para saber cuál se atenderá primero en caso de requests simultáneas se denomina sistema de interrupción de prioridad. Esto podría hacerse con métodos de software o hardware.
MÉTODO DE SOFTWARE – SONDEO
En este método, todas las interrupciones se atienden mediante la bifurcación al mismo programa de servicio. Este programa luego verifica con cada dispositivo si es el que genera la interrupción. El orden de verificación está determinado por la prioridad que debe establecerse. El dispositivo que tiene la prioridad más alta se verifica primero y luego los dispositivos se verifican en orden descendente de prioridad. Si se comprueba que el dispositivo está generando la interrupción, se llama a otro programa de servicio que funciona específicamente para ese dispositivo en particular. La estructura se verá algo como esto-
if (device[0].flag) device[0].service(); else if (device[1].flag) device[1].service(); . . . . . . else //raise error
La principal desventaja de este método es que es bastante lento. Para superar esto, podemos usar una solución de hardware, una de las cuales consiste en conectar los dispositivos en serie. Esto se llama método de conexión en string.
MÉTODO DE HARDWARE: CONEXIÓN EN CADENA
El método de conexión en string implica conectar todos los dispositivos que pueden solicitar una interrupción de manera serial. Esta configuración se rige por la prioridad de los dispositivos. El dispositivo con la prioridad más alta se coloca primero seguido por el segundo dispositivo de prioridad más alta y así sucesivamente. La figura dada representa este arreglo. FUNCIONANDO: Hay una línea de solicitud de interrupción que es común a todos los dispositivos y va a la CPU.
- Cuando no hay interrupciones pendientes, la línea está en estado ALTO. Pero si alguno de los dispositivos genera una interrupción, coloca la línea de solicitud de interrupción en el estado BAJO.
- La CPU reconoce esta solicitud de interrupción de la línea y luego habilita la línea de reconocimiento de interrupción en respuesta a la solicitud.
- Esta señal se recibe en la entrada PI (Prioridad de entrada) del dispositivo 1.
- Si el dispositivo no ha solicitado la interrupción, pasa esta señal al siguiente dispositivo a través de su salida PO (prioridad de salida). (PI = 1 y PO = 1)
- Sin embargo, si el dispositivo hubiera solicitado la interrupción, (PI = 1 & PO = 0)
- El dispositivo consume la señal de reconocimiento y bloquea su uso posterior colocando 0 en su salida PO (prioridad de salida).
- Luego, el dispositivo procede a colocar su dirección de vector de interrupción (VAD) en el bus de datos de la CPU.
- El dispositivo pone su señal de solicitud de interrupción en estado ALTO para indicar que se ha solucionado su interrupción.
- Si un dispositivo obtiene 0 en su entrada PI, genera 0 en la salida PO para informar a otros dispositivos que la señal de reconocimiento ha sido bloqueada. (PI = 0 y PO = 0)
Por lo tanto, el dispositivo que tiene PI = 1 y PO = 0 es el dispositivo de mayor prioridad que solicita una interrupción. Por lo tanto, mediante un arreglo en string tipo margarita, nos hemos asegurado de que la interrupción de mayor prioridad sea atendida primero y hemos establecido una jerarquía. Cuanto más lejos esté un dispositivo del primero, menor será su prioridad. Este artículo es una contribución de Jatin Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA