Bird
Raised Fist0
FreeRTOSprogramming~5 mins

Priority-based scheduling in FreeRTOS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is priority-based scheduling in FreeRTOS?
Priority-based scheduling is a method where tasks with higher priority get CPU time before lower priority tasks. FreeRTOS uses this to decide which task runs next.
Click to reveal answer
beginner
How does FreeRTOS handle tasks with the same priority?
FreeRTOS uses time slicing (round-robin) for tasks with the same priority, giving each task a turn to run for a fixed time slice if configUSE_TIME_SLICING is set to 1.
Click to reveal answer
intermediate
What happens if a higher priority task becomes ready while a lower priority task is running?
The scheduler immediately switches to the higher priority task, pausing the lower priority one until the higher priority task blocks or finishes.
Click to reveal answer
intermediate
Explain the role of configMAX_PRIORITIES in FreeRTOS.
configMAX_PRIORITIES sets the maximum number of priority levels available for tasks. It defines how many different priority levels you can assign.
Click to reveal answer
advanced
Why is priority inversion a concern in priority-based scheduling?
Priority inversion happens when a low priority task holds a resource needed by a high priority task, causing the high priority task to wait and reducing system responsiveness.
Click to reveal answer
In FreeRTOS, which task runs first?
AThe task with the highest priority
BThe task that was created first
CThe task with the lowest priority
DThe task with the longest runtime
What does FreeRTOS do when two tasks have the same priority?
ARuns only the first created task
BRuns them in a round-robin fashion
CRuns the lower priority task first
DRuns tasks randomly
What is the effect of a higher priority task becoming ready while a lower priority task runs?
AThe lower priority task continues until it finishes
BThe higher priority task waits
CBoth tasks run simultaneously
DThe scheduler switches immediately to the higher priority task
What does configMAX_PRIORITIES control in FreeRTOS?
AMaximum stack size
BMaximum number of tasks
CMaximum number of task priorities
DMaximum CPU frequency
What problem does priority inversion cause?
AHigh priority task waits for low priority task
BLow priority task runs too fast
CScheduler crashes
DTasks run out of memory
Describe how FreeRTOS decides which task to run next using priority-based scheduling.
Think about how the scheduler picks tasks based on priority and what happens when priorities are equal.
You got /3 concepts.
    Explain what priority inversion is and why it can be a problem in FreeRTOS scheduling.
    Consider how a low priority task holding a resource can delay a high priority task.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does priority-based scheduling in FreeRTOS ensure?

      easy
      A. Tasks run randomly without any priority
      B. Tasks run in the order they were created
      C. The highest priority task runs first
      D. All tasks run equally regardless of priority

      Solution

      1. Step 1: Understand priority-based scheduling

        Priority-based scheduling means tasks with higher priority get CPU time before lower priority tasks.
      2. Step 2: Apply this to FreeRTOS task execution

        FreeRTOS runs the highest priority task that is ready to run first, preempting lower priority tasks.
      3. Final Answer:

        The highest priority task runs first -> Option C
      4. Quick Check:

        Priority-based scheduling = highest priority runs first [OK]
      Hint: Highest priority task always runs first in FreeRTOS [OK]
      Common Mistakes:
      • Thinking tasks run in creation order
      • Assuming equal CPU time for all tasks
      • Believing tasks run randomly
      2.

      Which of the following is the correct way to set a task priority when creating a task in FreeRTOS?

      xTaskCreate(TaskFunction, "TaskName", 1000, NULL, ___, &TaskHandle);
      easy
      A. task name
      B. stack size
      C. task handle
      D. priority

      Solution

      1. Step 1: Identify parameters of xTaskCreate

        The fifth parameter in xTaskCreate is the task priority.
      2. Step 2: Match parameter to correct argument

        Passing 'priority' sets the task's priority level correctly.
      3. Final Answer:

        priority -> Option D
      4. Quick Check:

        Fifth parameter in xTaskCreate = priority [OK]
      Hint: Priority is the fifth argument in xTaskCreate [OK]
      Common Mistakes:
      • Confusing stack size with priority
      • Using task handle as priority
      • Passing task name instead of priority
      3.

      Given the following FreeRTOS tasks with priorities, which task will run first?

      Task A priority = 2
      Task B priority = 3
      Task C priority = 1
      
      medium
      A. Task A
      B. Task B
      C. Task C
      D. All run simultaneously

      Solution

      1. Step 1: Compare task priorities

        Task B has priority 3, which is higher than Task A (2) and Task C (1).
      2. Step 2: Determine which task runs first

        FreeRTOS runs the highest priority task first, so Task B runs before others.
      3. Final Answer:

        Task B -> Option B
      4. Quick Check:

        Highest priority (3) = Task B [OK]
      Hint: Highest number priority runs first in FreeRTOS [OK]
      Common Mistakes:
      • Choosing task with lowest priority
      • Assuming tasks run simultaneously
      • Ignoring priority values
      4.

      Identify the error in this FreeRTOS task creation code snippet:

      BaseType_t result = xTaskCreate(TaskFunc, "Task1", 500, NULL, 0, NULL);
      if(result != pdPASS) {
          // Handle error
      }

      What is wrong with the priority value?

      medium
      A. Priority 0 means lowest priority but is valid
      B. Priority 0 is invalid and causes error
      C. Priority must be greater than 5
      D. Priority should be a negative number

      Solution

      1. Step 1: Understand priority 0 in FreeRTOS

        Priority 0 is the lowest priority and is valid in FreeRTOS.
      2. Step 2: Check if priority 0 causes error

        Priority 0 does not cause an error; task creation can succeed with it.
      3. Final Answer:

        Priority 0 means lowest priority but is valid -> Option A
      4. Quick Check:

        Priority 0 is valid lowest priority [OK]
      Hint: Priority 0 is valid and lowest priority in FreeRTOS [OK]
      Common Mistakes:
      • Thinking priority 0 is invalid
      • Assuming priority must be > 5
      • Using negative priority values
      5.

      You have three tasks with priorities 2, 4, and 3. Task with priority 4 is blocked waiting for an event. Which task will FreeRTOS schedule next?

      hard
      A. Task with priority 3
      B. Task with priority 2
      C. Task with priority 4
      D. No task runs until priority 4 task is ready

      Solution

      1. Step 1: Understand task states and scheduling

        FreeRTOS schedules the highest priority task that is ready (not blocked).
      2. Step 2: Identify ready tasks

        Task with priority 4 is blocked, so it cannot run now. Tasks with priority 3 and 2 are ready.
      3. Step 3: Choose highest priority ready task

        Between priority 3 and 2, priority 3 is higher, so it runs next.
      4. Final Answer:

        Task with priority 3 -> Option A
      5. Quick Check:

        Highest ready priority = 3 [OK]
      Hint: Blocked tasks don't run; next highest ready priority runs [OK]
      Common Mistakes:
      • Trying to run blocked task
      • Ignoring task states
      • Assuming no task runs if highest priority blocked
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard