Hello,
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.
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.
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.