Summary
This chapter covered the Linux scheduler, preemption in Linux, and the Linux system clock and timers.
More specifically, we covered the following topics:
We introduced the new Linux 2.6 scheduler and outlined its new features.
We described how the scheduler chooses the next task from among all tasks it can choose and the algorithms the scheduler uses to do so.
We discussed the context switch that the scheduler uses to actually swap a process and traced the function into the low-level architecture-specific code.
We covered how processes in Linux can yield the CPU to other processes by calling schedule() and how the kernel then marks that process as "to be scheduled."
We delved into how the Linux kernel calculates dynamic priority based on the previous behavior of an individual process and how a process eventually gets removed from the scheduling queue.
We then moved on and covered implicit and explicit user- and kernel-level preemption and how each is dealt with in the 2.6 Linux kernel.
Finally, we explored timers and the system clock and how the system clock is implemented in both x86 and PPC architectures.