Ingo Molnar, a key kernel developer, (along with others) redesigned the internal structure of the kernel scheduler, introducing a new approach called scheduling classes (this was back in October 2007 with the release of the 2.6.23 kernel).
As a side note, the word class here isn't a coincidence; many Linux kernel features are intrinsically, and quite naturally, designed with an object-oriented nature. The C language, of course, does not allow us to express this directly in code (hence the preponderance of structures with both data and function pointer members, emulating a class). Nevertheless, the design is very often object-oriented (as you shall again see with the driver model in the Linux Kernel Programming Part 2 book). Please see the Further reading section of this chapter for more details on this.
A layer of abstraction was introduced under the core scheduling code, the schedule() function. This layer under schedule() is generically...