The effectiveness of any operating system is proportional to its ability to fairly schedule all contending processes. The process scheduler is the core component of the kernel, which computes and decides when and for how long a process gets CPU time. Ideally, processes require a timeslice of the CPU to run, so schedulers essentially need to allocate slices of processor time fairly among processes.
A scheduler typically has to:
- Avoid process starvation
- Manage priority scheduling
- Maximize throughput of all processes
- Ensure low turnaround time
- Ensure even resource usage
- Avoid CPU hogging
- Consider process' behavioral patterns for prioritization
- Elegantly subsidize under heavy load
- Handle scheduling on multiple cores efficiently