Task priority is a number assigned to each task that tells the scheduler which task should run first. Higher priority tasks run before lower priority ones.
Click to reveal answer
beginner
Why is priority design important in FreeRTOS?
Priority design ensures important tasks get CPU time when needed, preventing delays in critical operations and improving system responsiveness.
Click to reveal answer
intermediate
What can happen if all tasks have the same priority?
If all tasks have the same priority, the scheduler switches between them equally, which may cause critical tasks to wait too long and miss deadlines.
Click to reveal answer
advanced
How does priority inversion affect a FreeRTOS system?
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 slowing the system.
Click to reveal answer
advanced
What is a common method to avoid priority inversion in FreeRTOS?
Using priority inheritance, where the low priority task temporarily inherits the higher priority to finish quickly and release the resource.
Click to reveal answer
What does a higher task priority mean in FreeRTOS?
AThe task uses less memory
BThe task runs before lower priority tasks
CThe task runs less often
DThe task runs only when idle
✗ Incorrect
Higher priority tasks get CPU time before lower priority tasks.
What problem occurs if all tasks have the same priority?
ACritical tasks may be delayed
BSystem crashes immediately
CTasks never switch
DMemory leaks happen
✗ Incorrect
Equal priority means critical tasks might wait too long, causing delays.
What is priority inversion?
ATasks have no priority
BHigh priority task runs twice
CLow priority task blocks a high priority task
DScheduler stops working
✗ Incorrect
Priority inversion is when a low priority task holds a resource needed by a high priority task.
How does FreeRTOS help avoid priority inversion?
AUsing round-robin scheduling
BDisabling interrupts
CIncreasing stack size
DPriority inheritance
✗ Incorrect
Priority inheritance lets a low priority task temporarily run at higher priority to release resources faster.
Why should priority design be planned carefully?
ATo ensure important tasks run on time
BTo use more memory
CTo slow down the system
DTo avoid using interrupts
✗ Incorrect
Careful priority design ensures critical tasks get CPU time when needed.
Explain why task priority design matters in FreeRTOS and what can happen if it is not done properly.
Think about which tasks need to run first and what happens if they don't.
You got /3 concepts.
Describe priority inversion and how FreeRTOS handles it.
Consider a low priority task holding a resource needed by a high priority task.
You got /3 concepts.
Practice
(1/5)
1.
Why is task priority important in FreeRTOS?
easy
A. It determines which task runs first when multiple are ready.
B. It changes the task's memory size automatically.
C. It controls the task's stack overflow protection.
D. It sets the task's execution time limit.
Solution
Step 1: Understand task scheduling in FreeRTOS
FreeRTOS uses task priorities to decide which task runs when multiple tasks are ready.
Step 2: Identify the role of priority
The highest priority ready task gets CPU time first, ensuring important tasks run promptly.
Final Answer:
It determines which task runs first when multiple are ready. -> Option A
Quick Check:
Priority controls task execution order = A [OK]
Hint: Priority decides task run order, highest runs first [OK]
Common Mistakes:
Confusing priority with memory size
Thinking priority limits execution time
Assuming priority controls stack protection
2.
Which of the following is the correct way to set a task priority in FreeRTOS?
vTaskPrioritySet(
easy
A. vTaskPrioritySet(TaskHandle_t xTask);
B. vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority);
C. vTaskPrioritySet(UBaseType_t uxNewPriority, TaskHandle_t xTask);
D. vTaskPrioritySet(UBaseType_t uxNewPriority);
Solution
Step 1: Recall FreeRTOS API for setting priority
The function vTaskPrioritySet requires the task handle and the new priority as parameters.
Step 2: Check parameter order
The correct order is first the task handle, then the new priority value.
Final Answer:
vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority); -> Option B
Quick Check:
Correct parameter order = C [OK]
Hint: Task handle first, then priority in vTaskPrioritySet [OK]
Common Mistakes:
Swapping parameter order
Missing one parameter
Using wrong parameter types
3.
Given two tasks, TaskA with priority 3 and TaskB with priority 2, both ready to run, which task will FreeRTOS run first?
medium
A. TaskB
B. Depends on task creation order
C. Both run simultaneously
D. TaskA
Solution
Step 1: Compare task priorities
TaskA has priority 3, TaskB has priority 2. Higher number means higher priority.
Step 2: Determine which task runs first
FreeRTOS runs the highest priority ready task first, so TaskA runs before TaskB.
Final Answer:
TaskA -> Option D
Quick Check:
Higher priority runs first = B [OK]
Hint: Higher priority number runs first in FreeRTOS [OK]
Common Mistakes:
Thinking lower number means higher priority
Assuming tasks run simultaneously
Believing creation order affects scheduling
4.
What is wrong with this code snippet?
vTaskPrioritySet(3, TaskHandle);
medium
A. Parameters are in wrong order.
B. Priority value 3 is invalid.
C. TaskHandle should be a number.
D. Function name is incorrect.
Solution
Step 1: Check function parameter order
The correct order is (TaskHandle_t xTask, UBaseType_t uxNewPriority), but here it is reversed.
Step 2: Validate parameter types
TaskHandle should be first, priority second. The code swaps them causing error.
Final Answer:
Parameters are in wrong order. -> Option A
Quick Check:
Correct parameter order matters = A [OK]
Hint: Task handle first, priority second in vTaskPrioritySet [OK]
Common Mistakes:
Swapping parameters
Using wrong data types
Misnaming the function
5.
You have three tasks: Task1 (priority 2), Task2 (priority 2), and Task3 (priority 3). Task1 and Task2 share a resource and must not run simultaneously. How should you design priorities to keep the system responsive and safe?
hard
A. Use no priorities and rely on task delays.
B. Set all tasks to same priority to avoid conflicts.
C. Set Task3 highest priority, Task1 and Task2 equal lower priorities, use mutex for resource.
D. Set Task1 highest priority, Task2 medium, Task3 lowest.
Solution
Step 1: Assign highest priority to critical task
Task3 has highest priority (3) to keep system responsive.
Step 2: Use equal lower priorities and mutex for shared resource
Task1 and Task2 have same priority (2) and use a mutex to prevent simultaneous access.
Step 3: Avoid equal priorities without synchronization
Equal priorities without mutex risk resource conflicts; delays reduce responsiveness.
Final Answer:
Set Task3 highest priority, Task1 and Task2 equal lower priorities, use mutex for resource. -> Option C
Quick Check:
Priority + mutex ensures safety and responsiveness = D [OK]
Hint: Use highest priority for critical task, mutex for shared resource [OK]
Common Mistakes:
Ignoring resource protection
Setting all tasks same priority without sync
Using delays instead of priorities
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.