Hard real-time vs soft real-time in FreeRTOS - Performance Comparison
When working with FreeRTOS, tasks must meet timing needs. Some tasks must finish exactly on time, others can be a bit late.
We want to understand how timing demands affect how the system handles tasks as workload grows.
Analyze the timing behavior of two task types in FreeRTOS.
// Hard real-time task example
void HardTask(void *params) {
TickType_t lastWakeTime;
const TickType_t period = pdMS_TO_TICKS(100); // 100 ms period, adjust as needed
lastWakeTime = xTaskGetTickCount();
for (;;) {
// Must complete before deadline
PerformCriticalWork();
vTaskDelayUntil(&lastWakeTime, period);
}
}
// Soft real-time task example
void SoftTask(void *params) {
TickType_t lastWakeTime;
const TickType_t period = pdMS_TO_TICKS(100); // 100 ms period, adjust as needed
lastWakeTime = xTaskGetTickCount();
for (;;) {
PerformNonCriticalWork();
vTaskDelayUntil(&lastWakeTime, period);
}
}
This code shows two tasks: one must finish work exactly on time (hard real-time), the other can tolerate delays (soft real-time).
Look at what repeats in these tasks.
- Primary operation: The infinite loops running tasks repeatedly.
- How many times: They run forever, repeating work each period.
As the number of tasks or workload increases, timing demands affect system behavior.
| Input Size (number of tasks) | Approx. Operations |
|---|---|
| 1 | Task runs on time easily |
| 5 | System manages scheduling, some delays possible for soft tasks |
| 20 | Hard tasks need strict scheduling; soft tasks may experience delays |
Pattern observation: Hard real-time tasks require strict timing regardless of load, while soft real-time tasks can handle more delay as load grows.
Time Complexity: O(n)
This means the system's scheduling effort grows linearly with the number of tasks, affecting how well timing guarantees hold.
[X] Wrong: "All real-time tasks have the same strict timing needs."
[OK] Correct: Hard real-time tasks must meet exact deadlines, but soft real-time tasks can tolerate some delays without failure.
Understanding the difference between hard and soft real-time helps you explain how systems handle timing under pressure. This skill shows you know how to balance strict deadlines with flexible scheduling.
"What if we changed the soft real-time task to use vTaskDelayUntil instead of vTaskDelay? How would the time complexity and timing guarantees change?"