es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Preemptación de tareas en FREE RTOS

Revisando el manual de FreeRTOS, me encontré con una frase donde se menciona lo siguiente:

Es importante tener en cuenta que el final de un intervalo de tiempo no es el único lugar donde el planificador puede seleccionar una nueva tarea para ejecutar; como se demostrará a lo largo de este libro, el planificador también seleccionará una nueva tarea para ejecutar inmediatamente después de que la tarea que se está ejecutando actualmente entre en el estado Bloqueado, o cuando una interrupción mueva una tarea de mayor prioridad al estado Ready.

Estoy confundido con la forma en que funciona la preempción en FreeRTOS. Consideremos una tarea A con prioridad 1 que está en estado RUNNING. También consideremos que la tarea B con prioridad más alta, 2, entra en estado READY cuando la tarea A está en medio del intervalo de tiempo.

Q1: ¿De qué tipo de interrupción está hablando el manual?

Q2: ¿Es la interrupción la única forma de llevar la tarea B al estado READY mientras la tarea A está en estado RUNNING?

Q3: Si la respuesta a la pregunta 2 es no, ¿cuándo ocurriría el cambio de tarea si no es impulsado por una interrupción? ¿Es después de que el intervalo de tiempo termine o es de inmediato en medio del intervalo de tiempo sin esperar al final del mismo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    A1: El manual no se refiere a ningún tipo específico de interrupción. Menciona que cada vez que una interrupción mueve una tarea de mayor prioridad al estado Ready, el planificador seleccionará esa nueva tarea para ejecutarla inmediatamente.

    A2: No, la interrupción no es la única forma de llevar la tarea B al estado READY mientras la tarea A está en estado RUNNING. Como se menciona en la frase, el planificador también puede seleccionar una nueva tarea para ejecutar inmediatamente después de que la tarea que se está ejecutando actualmente pasa al estado Blocked.

    A3: Si el cambio de tarea no está impulsado por interrupciones, el planificador seleccionará una nueva tarea para ejecutar inmediatamente después de que la tarea que se está ejecutando actualmente pasa al estado Blocked, o cuando finalice el intervalo de tiempo (si la tarea todavía está en estado Running). Por lo tanto, el cambio de tarea puede ocurrir inmediatamente en medio del intervalo de tiempo o al final del intervalo de tiempo, dependiendo del estado actual de las tareas.

Comments are closed.