diferencia entre la prioridad y la tabla de vectores

-1

¿Hay alguna diferencia entre la tabla de vectores de interrupción y la tabla de prioridad? ¿El nodo vectorial simplemente dice su prioridad? Aquí está la tabla de vectores:

    
pregunta user123456

4 respuestas

4

La tabla de vectores de interrupción es simplemente un área de la memoria (a menudo comienza en la dirección 0) para contener todos los posibles vectores de interrupción para un procesador. Por vector, esto significa que cuando ocurre una interrupción, el procesador detendrá lo que está haciendo, y luego vector a la ubicación de memoria reservada para esa interrupción. En un procesador de 32 o 64 bits, puede haber cientos de vectores.

Cada vector está separado por un número fijo de bytes que permite, como mínimo, almacenar un salto allí que saltará al principio de la ISR (rutina de servicio de interrupción) que maneja esa interrupción.

La ubicación de esta tabla, y el orden de los vectores dentro de ella, son una característica del hardware del procesador y no se pueden modificar, excepto en algunos procesadores, la cantidad de bytes asignados para cada vector se puede modificar.

El programa establece las prioridades de interrupción para cada fuente de interrupción que está habilitada. Como ejemplo, pueden variar de 1 (el más bajo) a 7 (el más alto); existen muchos otros esquemas. Si llega una interrupción que tiene una prioridad más alta que la que se está ejecutando actualmente, la actual será interrumpida por la más alta a menos que las interrupciones estén deshabilitadas.

Algunos procesadores incluso permiten que se especifiquen prioridades secundarias dentro de un grupo de prioridad principal. Por lo tanto, esto controlaría lo que sucede cuando llega una interrupción con el mismo nivel de prioridad principal que el que se está ejecutando actualmente.

    
respondido por el tcrosley
4

Sí, hay una diferencia. La tabla vectorial le dice al procesador DÓNDE para ir a ejecutar el código cuando ocurre una interrupción. Si la interrupción está habilitada y su marca está activada, la prioridad le dice al procesador CUANDO se le permite ir allí y ejecutar el código.

Por lo tanto, la interrupción siempre ejecutará el código en la dirección en el vector. Pero si su prioridad es baja y se están ejecutando otras interrupciones de mayor prioridad, puede pasar algún tiempo antes de que realmente se ejecute.

En algunas derivadas de 8051, si obtiene dos interrupciones de prioridad idénticas al mismo tiempo, la interrupción que tiene prioridad está determinada por una "secuencia de sondeo interno", que es del mismo orden que los periféricos que aparecen en la tabla vectorial. . Pero eso no es necesariamente cierto para todos los procesadores. Las implementaciones de los sistemas de interrupción pueden ser muy diferentes.

    
respondido por el TjW
0
  • La prioridad se refiere a las interrupciones, cada interrupción tiene su propia nivel de prioridad.
  • El número de prioridad más bajo representa la interrupción con mayor prioridad.
  • Las interrupciones de mayor número de prioridad están deteniendo la ejecución de la interrupción con menor prioridad.
  • Si no se definen prioridades, cuando llega una nueva interrupción, se configura en modo pendiente, y espera a que finalice la interrupción activa actualmente.
  • Puede definir grupos de interrupción en caso de que desee agregar la misma prioridad nivel a algún grupo de interrupciones.
  • Puede encontrar todas las interrupciones disponibles en Vector Table .
  • La tabla de vectores es una tabla que contiene: número de interrupción, prioridad, puntero a ISR.
  

Entonces, cada vez que recibe una interrupción, va a Vector Table, encuentra   número de prioridad apropiado e interrupción, luego salta a una función que   es señalado por un valor de Vector Table y ejecuta esa rutina ISR   también llamada función de interrupción.

    
respondido por el Junior
0

Depende de la arquitectura. Para algunos, la prioridad también puede definirse por el orden de los vectores, dejándole saber la opción, el vector 7 conectado a foo, siempre puede tener una prioridad más alta que el desplazamiento del vector 8 vinculado a la barra.

En general, aunque uno esperaría que la tabla vectorial fuera solo una tabla, la guía telefónica o la agenda de direcciones. A quién llama primero para algún tipo de evento es una lista separada, de esa lista de prioridades obtiene un nombre, luego busca el nombre en la guía telefónica y los llama. Usted está desesperado por comprar pizza y pedir pizza es actualmente más importante que alimentar a la mascota, busca el número de pizza en la tabla de vectores, llame a ese número, luego busque el teléfono celular de sus hijos y haga que alimenten al perro. La tabla de vectores es la lista de direcciones a las cosas. La prioridad es separada ... por lo general.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas