A scheduler is a program that allows multiple different programs, or “Tasks” to run at a time on a single processor. There are many policies for which task to run/ how to share processor time, in this case, using round robin and priority, which just means there can be different priority levels, which always run before lower priorities, and tasks at the same priority each get equal slices (of 1 ms).
The advantage of utilizing a scheduler or operating system isn’t in being able to do new things, as anything that could be done with an operating system could be done without one, but in it being easier for engineers to build with, and in practice more reliable. In the video you will see a “blocking task” run with a while(1) {} loop, without negatively affecting any other part of the system.
In the video I break the project down at different levels
Intro
How it works in real life with simple examples
Breaking down how I achieved it theoretically
Showing off code, stepping through with the debugger, and extensions to this project