I've seen it written many times that the Linux scheduler schedules processes. I'm teaching a course on multithreaded programming, and would like to get my terminology straight. I have one thing I would like to say about it (written below), hoping someone can help me clear out the most egregious errors:
It's not the process that the scheduler schedules, it's the thread associated to that process. The process is simply a bunch of memory mapping segments, and thus static. We can see this clearly when we
clone()(mostly, but not exactly, the same), whereby one process has several threads, and it is those that are scheduled (otherwise you would only schedule the process thread (the PID=TID one), rather than any other. I assume the ambiguity is due to the fact that all processes have at least one thread of execution.
Is this the correct (although simplified) picture?