En este artículo, aprenderá sobre la diferencia entre el ISR y Llamada de función , pero antes de discutir las diferencias, debe conocer brevemente el ISR y la llamada a función.
¿Qué es el ISR?
Una rutina de servicio de interrupción (ISR) es una rutina de software que el hardware invoca en respuesta a una interrupción. ISR examina una interrupción, determina cómo manejarla, la ejecuta y devuelve un valor de interrupción lógico. Si no se requiere más manejo, el ISR notifica al kernel con un valor de retorno. Un ISR debe funcionar muy rápidamente para evitar ralentizar el funcionamiento del dispositivo y el funcionamiento de todos los ISR de menor prioridad.
Aunque un ISR puede mover datos desde un registro de CPU o un puerto de hardware a un búfer de memoria, generalmente depende de un subproceso (o tarea) de interrupción dedicado, llamado subproceso de servicio de interrupción (IST), para realizar la mayor parte del procesamiento requerido. Si se requiere procesamiento adicional, el ISR devuelve un valor de interrupción lógica al kernel. Luego asigna un número de interrupción física a un valor de interrupción lógica.
Mecanismo de manejo de interrupciones
A continuación se muestra el mecanismo de manejo de interrupciones en los siguientes pasos, tales como:
- Una interrupción es una condición que hace que la CPU suspenda el programa actual y ejecute un ISR. Un ISR es un programa especialmente escrito para dar servicio a la condición que causó la interrupción.
- Después de atender una interrupción, la CPU regresa al programa principal, exactamente en la siguiente instrucción donde lo dejó.
- En la transferencia de datos impulsada por interrupciones, siempre que el dispositivo de E/S esté listo para la transferencia de datos, interrumpirá la CPU. En el ISR, la CPU realizará la transferencia de datos.
- Este método es mejor que el sondeo porque la CPU no tiene que perder tiempo comprobando el estado del dispositivo de E/S. Un teclado es un buen ejemplo de acceso de E/S controlado por interrupciones.
- En lugar de verificar la CPU, el teclado debería interrumpir la CPU cuando se presiona una tecla. Por lo tanto, no se perderá tiempo revisando repetidamente el teclado cuando el usuario no esté escribiendo nada.
- El dispositivo de E/S solicita una interrupción enviando el $overline{INTR}$ señal a la CPU.
- Cada vez que la CPU recibe $overline{INTR}$ señal, completa la ejecución de la instrucción actual y luego ejecuta el ISR. Cuando la CPU está lista, envía una señal de reconocimiento a través del MIENTRAS línea.
- ISR se ejecuta y la CPU regresa al programa principal.
- Los dispositivos de E/S apagan el $overline{INTR}$ señal después de la ejecución.
Por ejemplo: En el siguiente ejemplo, transferencia de E/S mediante E/S controlada por interrupción.
- Si un dispositivo de E/S que quiere realizar una transferencia de datos con el procesador debe interrumpir el procesador.
- Una interrupción es una condición que hace que el procesador ejecute una Rutina de Servicio de Interrupción.
- En el ISR, el procesador realizará la transferencia de datos con el dispositivo de E/S.
En este ejemplo, interrumpa la solicitud presionando la tecla del teclado,
- En lugar de que el procesador verifique si se presiona una tecla, el teclado interrumpe al procesador cuando presiona una tecla.
- En el ISR del teclado, que forma parte del software del controlador del teclado, el procesador leerá los datos del teclado.
Ventajas del ISR
A continuación se detallan las siguientes ventajas de ISR, tales como:
- Los eventos asincrónicos ISR pueden ocurrir en cualquier momento durante la ejecución del programa.
- ISR guarda la PC, las banderas y los registros en la pila, desactiva todas las interrupciones y carga la dirección del ISR.
- ISR no puede tener argumentos que se le puedan pasar.
- ISR no puede devolver valores.
- ISR habilita las interrupciones.
- Generalmente, el ISR es pequeño ya que requiere tiempo de algún otro proceso.
- Algunos ISR tienen su propia pila.
¿Qué es la llamada a función?
Una llamada a función también se llama llamada a subrutina. Una subrutina es un conjunto de instrucciones que el programa necesita repetidamente. Es parte de un programa más grande que se encarga de realizar una tarea específica. El programa más grande puede ejecutar una gran carga de trabajo y la subrutina puede estar realizando solo una tarea simple, que también es independiente de la codificación restante del programa.
Una función está codificada de tal manera que se puede llamar varias veces y desde diferentes lugares (incluso desde otras funciones). Cuando se llama a una función, el procesador puede ir a donde reside el código de la función y ejecutar las instrucciones de la función una por una. Después de completar las funciones, el procesador volverá exactamente a donde lo dejó y continuará la ejecución a partir de la siguiente instrucción.
Las funciones son una gran herramienta para la reutilización de código. Muchos lenguajes de programación modernos admiten funciones. Un conjunto de funciones se llama biblioteca . Las bibliotecas se utilizan a menudo como medio para compartir e intercambiar software. En algunos casos, todo el programa podría ser una secuencia de subrutinas.
En el caso de un procesador 8086, una subrutina es invocada por un LLAMAR retornos de instrucción y control por parte de un BIEN instrucción. Reduce el tamaño del programa.
Diferencia entre ISR y llamada de función
Una función debe llamarse explícitamente y es parte del mismo contexto y hilo de ejecución que su llamador. Un ISR de hardware no se llama explícitamente, sino que lo invoca algún evento externo. El contexto del hilo actual se conserva automáticamente cuando se llama a una interrupción antes de cambiar el contexto al ISR.
A cambio, se produce el cambio de contexto inverso, restaurando el estado del procesador antes de la interrupción para que la ejecución continúe desde el punto de interrupción. A continuación se muestran algunas diferencias más entre ISR y llamada de función.
ISR | Llamada de función |
---|---|
La interrupción suele ser iniciada por un microprocesador de señales interno o externo en lugar de la ejecución de instrucciones. El ISR se ejecuta después de almacenar el estado actual del programa en la pila. ISR realiza diferentes tareas dependiendo del dispositivo interrumpido o de las instrucciones escritas por un programador. | La llamada a la función se invoca ejecutando instrucciones, que realizan tareas específicas y reducen el tamaño del programa. |
El hardware determina la dirección del ISR. La dirección ISR se escribe dentro de la tabla de vectores de interrupción y la dirección ISR para cada interrupción es fija. | La dirección de la subrutina está escrita dentro de la instrucción, que está escrita dentro del código principal del programa. |
ISR se utiliza para todas las tareas de propósito general. | Las llamadas a funciones se realizan para tareas específicas del programa. |
Cuando ocurre una interrupción durante la ejecución de un programa actual, por lo tanto, después de la ejecución de la instrucción actual, el procesador ejecuta ISR. Después de la ejecución de ISR, el procesador debe reanudar el programa exactamente como antes de que ocurriera la interrupción. Para ello se almacena el contenido del PC, los registros µP y algunas condiciones de estado. La colección de todas las condiciones de los bits de estado en un microprocesador se denomina PSW (palabra de estado del programa).
| Aquí, solo se almacena una PC en la pila para obtener la dirección de la siguiente instrucción en el programa principal. La subrutina debe tener acceso a los datos de la subrutina que llama y devolver resultados a esa subrutina. Por lo tanto, se realizan los parámetros de subrutina y el enlace de datos. Esto se puede hacer a través de
|