Schedule Table Handling

I am totally new to FreeRTOS, therefore I have a beginner question. Does FreeRTOS provide schedule tables/table-driven scheduling of tasks? So far I have found neither a confirmation that it exists nor that it does not exist.

Thank you for your help.


FreeRTOS uses priority scheduling, at every moment, a highest priority ready task is running. Two tasks at the same priority can be allowed to switch back and forth if you enable the “round-robin” option for the scheduler.

If you disable preemption, then “highest priority” is only evaluated an designated system calls, which simplifies some data sharing issues but can means high priority tasks can get delayed by low priority tasks not performing calls that can initiate a scheduling operation.

Welcome! Could you elaborate a bit more? As in, what behavior are you looking for with the table-driven scheduling? I’m not sure how to interpret “table-driven”.

My understanding of “table-driven” is that it tends to refer to system where the designer manually applies rules about when and how often each task gets to run. It is more used for not quite real time scheduling to try to allocate enough time to finish tasks within medium scale time frames.

It is a little bit difficult to explain what specifically I need but a general approach to table-driven scheduling is explained at geeksforgeeks. Unfortunately new users cannot add links to comments, so please search for “geeksforgeeks table driven scheduling vs cyclic scheduling” - it should show you the correct page.

I believe that the link you would be providing is this one:

Difference between Table-driven and Cyclic Scheduling - GeeksforGeeks

Richard Damon’s answer is comprehensive, except for the note that it is fairly easy for developers to replace the built-in task selection algorithm with a custom scheme.

Yes, this is the correct link

And, as I pointed out, neither of those scheduling Algorithms are designed to be “Real Time”.

Note in particular, that your “Table Driven” method is described as “It is not often used in embedded systems.”

FreeRTOS is designed for “embedded systems”, so seeing no sign of support for it would not be surprising.