Bird
Raised Fist0
FreeRTOSprogramming~20 mins

Priority numbering in FreeRTOS - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
FreeRTOS Priority Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Understanding FreeRTOS priority numbering
Consider a FreeRTOS system with configMAX_PRIORITIES set to 5. If a task is created with priority 3, what is the relative priority of this task compared to a task with priority 1?
ABoth tasks have the same priority.
BThe task with priority 3 has lower priority than the task with priority 1.
CThe task with priority 3 has higher priority than the task with priority 1.
DPriority numbers do not determine task priority in FreeRTOS.
Attempts:
2 left
💡 Hint

Remember, in FreeRTOS, higher numeric priority means higher task priority.

❓ Predict Output
intermediate
2:00remaining
Effect of configMAX_PRIORITIES on task creation
If configMAX_PRIORITIES is set to 4, what happens when you try to create a task with priority 5?
AThe task is created with priority 5 without any error.
BThe system crashes immediately.
CThe task is created with priority 0 instead.
DThe task creation fails or priority is capped at the maximum allowed priority.
Attempts:
2 left
💡 Hint

Check the allowed range of priorities based on configMAX_PRIORITIES.

🔧 Debug
advanced
3:00remaining
Why does a higher priority task not run immediately?
In FreeRTOS, a task with priority 4 is created while a task with priority 3 is running. However, the higher priority task does not start running immediately. What could be the reason?
AThe scheduler is not started or preemption is disabled.
BThe task with priority 3 has a higher priority than 4.
CFreeRTOS does not support priority-based scheduling.
DThe higher priority task is blocked or suspended.
Attempts:
2 left
💡 Hint

Think about scheduler state and preemption settings.

🧠 Conceptual
advanced
3:00remaining
Priority inversion and FreeRTOS priority numbering
Which statement best describes how FreeRTOS priority numbering helps to avoid priority inversion?
APriority inversion is avoided by disabling all interrupts.
BHigher numeric priority tasks always preempt lower priority tasks, reducing priority inversion.
CFreeRTOS uses random priority assignment to avoid priority inversion.
DFreeRTOS does not handle priority inversion at all.
Attempts:
2 left
💡 Hint

Consider how task priorities affect scheduling and preemption.

❓ Predict Output
expert
3:00remaining
Determining the number of priority levels in FreeRTOS
Given configMAX_PRIORITIES is set to 7, how many distinct priority levels can tasks have in FreeRTOS?
A7 distinct priority levels, numbered 0 to 6.
B6 distinct priority levels, numbered 1 to 6.
C8 distinct priority levels, numbered 0 to 7.
DOnly 1 priority level regardless of configMAX_PRIORITIES.
Attempts:
2 left
💡 Hint

Remember how FreeRTOS counts priority levels starting from zero.

Practice

(1/5)
1. In FreeRTOS, what does a higher priority number mean for a task?
easy
A. The task runs before lower priority tasks
B. The task runs after lower priority tasks
C. The task runs at the same time as lower priority tasks
D. The task is ignored by the scheduler

Solution

  1. Step 1: Understand priority numbering

    In FreeRTOS, priority numbers start at 0 for the lowest priority and increase for higher priorities.
  2. Step 2: Relate priority to task execution

    Higher priority tasks are scheduled to run before lower priority tasks to ensure responsiveness.
  3. Final Answer:

    The task runs before lower priority tasks -> Option A
  4. Quick Check:

    Higher priority number = runs first [OK]
Hint: Higher number means higher priority and runs first [OK]
Common Mistakes:
  • Thinking higher number means lower priority
  • Assuming tasks run simultaneously regardless of priority
  • Confusing priority with task creation order
2. Which of the following is the correct way to define the highest priority in FreeRTOS if configMAX_PRIORITIES is 5?
easy
A. 5
B. 6
C. 4
D. 0

Solution

  1. Step 1: Understand priority range

    Priority numbers start at 0 and go up to configMAX_PRIORITIES - 1.
  2. Step 2: Calculate highest priority

    With configMAX_PRIORITIES = 5, highest priority is 5 - 1 = 4.
  3. Final Answer:

    4 -> Option C
  4. Quick Check:

    Highest priority = configMAX_PRIORITIES - 1 = 4 [OK]
Hint: Highest priority = configMAX_PRIORITIES minus one [OK]
Common Mistakes:
  • Using configMAX_PRIORITIES as highest priority directly
  • Using 0 as highest priority
  • Choosing a number outside the allowed range
3. Given three tasks with priorities 2, 4, and 1, which task will FreeRTOS schedule to run first?
medium
A. Task with priority 4
B. Task with priority 2
C. Task with priority 1
D. All run simultaneously

Solution

  1. Step 1: Identify task priorities

    Tasks have priorities 2, 4, and 1 respectively.
  2. Step 2: Determine highest priority

    Priority 4 is the highest number, so that task runs first.
  3. Final Answer:

    Task with priority 4 -> Option A
  4. Quick Check:

    Highest priority runs first = 4 [OK]
Hint: Task with highest priority number runs first [OK]
Common Mistakes:
  • Choosing the lowest priority task
  • Assuming tasks run in creation order
  • Thinking tasks run simultaneously
4. What is wrong with this priority assignment if configMAX_PRIORITIES is 3?
vTaskPrioritySet(taskHandle, 3);
medium
A. Priority 3 is valid and highest
B. Priority 3 is out of range; max is 2
C. Priority must be zero
D. Priority must be negative

Solution

  1. Step 1: Check allowed priority range

    Priorities go from 0 to configMAX_PRIORITIES - 1, so 0 to 2 here.
  2. Step 2: Validate assigned priority

    Priority 3 is outside this range and invalid.
  3. Final Answer:

    Priority 3 is out of range; max is 2 -> Option B
  4. Quick Check:

    Max priority = 2, 3 is invalid [OK]
Hint: Priority must be less than configMAX_PRIORITIES [OK]
Common Mistakes:
  • Using configMAX_PRIORITIES as a valid priority
  • Assigning negative priorities
  • Assuming priority zero is highest
5. You have tasks with priorities 0, 1, and 2. You want the system to always run the task with priority 1 before the others, but currently priority 2 runs first. How can you fix this using FreeRTOS priority numbering?
hard
A. Set all tasks to priority 0
B. Set the task currently at 1 to priority 0
C. Set the task currently at 2 to priority 0
D. Set the priority of the task currently at 1 to 3 and others lower

Solution

  1. Step 1: Understand current priorities

    Task with priority 2 runs first because it has highest priority.
  2. Step 2: Adjust priorities to reorder execution

    Increase the priority of the task currently at 1 to a number higher than 2 (e.g., 3) so it runs first.
  3. Step 3: Lower other tasks' priorities

    Set other tasks to lower priorities to ensure the desired task runs first.
  4. Final Answer:

    Set the priority of the task currently at 1 to 3 and others lower -> Option D
  5. Quick Check:

    Higher priority number runs first, so raise desired task's priority [OK]
Hint: Raise desired task priority above others to run first [OK]
Common Mistakes:
  • Lowering all priorities to zero
  • Not increasing the desired task's priority
  • Assuming priority 0 is highest
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