A scheduler is a program that is the implementation of a scheduling
algorithm to manage access of processes and threads to limited
resource like CPU or an I/O channel.
The goal of most scheduling algorithms is to provide load balancing
for the available processes/threads and to guarantee that each
process/thread will get a reasonable time frame to access the
requested resource exclusively