There isn't a "best" categorization. Depending on your goal, different categorization schemes/taxonomies may useful. Frequently used categories are, e.g., the process model a scheduling algorithm applies to (e.g. preemptable/nonpreemtable), or the scheduling goal (e.g., fairness, performance, etc.).
@Muhammad Zakarya: this categorization is quite poor, since it is not discriminating. E.g., real-time scheduler could be both, static and dynamic. Taking global vs. local as one dimension would make sense, since we talking about distributed systems. However, frequently you need both, a global assignment and a local uniprocessor scheduling, within one approach.
Then how can one categorize and characterize the individual scheduler in a unique way? How will one can choose by considering proper parameters a best suitable scheduling approach?
Scheduling is related to queueing. Mathematical queuing models or disciplines may be divided into:
- M/G/1 queue
- M/M/1 queue
- M/M/c queue
- Generalized queueing network (G-network)
- Bulk queue
- Fluid queue
My area is data communications, where the scheduling may involve fair scheduling algorithms, differentiated quality-of-service and other forms of teletrafic engineering, for example: