¿Qué sucede cuando se produce la misma interrupción durante un ISR? [cerrado]

-1

Para manejar una interrupción, el procesador salta a una rutina de servicio de interrupción (ISR). Si este ISR genera la misma interrupción, esto puede resultar en:

a) error del programa

b) error de hardware

c) desbordamiento de pila

Esta es una pregunta formulada en un examen de ingreso a la universidad y soy un estudiante de ciencias de la computación. ¿Es posible tener la misma interrupción mientras se ejecuta el ISR?

    
pregunta user1766481

2 respuestas

2

En la mayoría de los microcontroladores simples, las interrupciones se deben desactivar durante la rutina de servicio de interrupción (ISR). Por ejemplo, en los PIC básicos, el procesador lo garantiza al borrar el bit GIE en INTCON para evitar que se produzcan interrupciones adicionales.

En los procesadores complejos, las cosas se vuelven más complicadas, ya que hay prioridades de interrupción y, a menudo, diferentes tipos de interrupción, algunas de las cuales deberán tratarse de inmediato.

Si su pregunta es de opción múltiple, es difícil de responder ya que cualquiera de esas tres opciones es posible. Dependerá del procesador.

Le gustaría leer sobre reentrancy , específicamente la sección sobre controladores de interrupción de reentrante . ARM tiene un buen documento sobre ISR reentrante relevante a sus procesadores y hay una pregunta en el StackOverflow principal sobre el mismo tema.

    
respondido por el David
2

Sin más información, esta pregunta es imposible de responder.

Enseño varios temas relacionados con la informática, pero no sé con certeza qué se supone que significa un "error de programa". ¿Es algo detectado por hardware (como un error de página)? ¿O es que el código no hace lo que el programador pretendía que hiciera?

¡Si se producirá un error de hardware depende del hardware utilizado! En general, este no será el caso.

La pregunta podría significar que el ISR siempre genera la misma interrupción nuevamente. En un chip que deshabilita las interrupciones hasta la interrupción-retorno (PIC), esta nueva interrupción podría

  • simplemente se ignorará (cuando el ISR elimine la interrupción al final), o
  • el resultado es una reactivación infinita de la interrupción (cuando el ISR borra la interrupción antes de que la cause nuevamente): esto podría ser intencional o no (= error del programa ??)

En los chips que permiten que una interrupción se interrumpa (AFAIK, esto es raro), la recursión infinita causaría un desbordamiento de pila. (Lo que podría manifestarse como un error de página. ¿Es un error de hardware?)

Si la pregunta significa que una interrupción ocasionalmente causa la misma interrupción, es muy probable que no ocurra nada especial, aunque la segunda interrupción podría no ser manejada (pero nuevamente, esto depende de cómo se maneje el chip). interrupciones anidadas y cómo se codifica el ISR.)

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas