As you learned in Chapter 6, Kernel Internals Essentials – Processes and Threads, in the Organizing processes, threads, and their stacks – user and kernel space section, every process – in fact, every thread alive on the system – is bestowed with a task structure (struct task_struct) and both a user-mode as well as a kernel-mode stack.
Here, the key question to ask is: when scheduling is performed, what object does it act upon, in other words, what is the Kernel Schedulable Entity, the KSE? On Linux, the KSE is a thread, not a process (of course, every process contains a minimum of one thread). Thus, the thread is the granularity level at which scheduling is performed.
An example will help explain this: if we have a hypothetical situation where we have one CPU core and 10 user space processes, consisting of three threads each, plus five kernel threads, then we have a total of (10 x 3) + 5, which equals 35 threads. Each of them...