6
votes

Multi-core processors exploits thread level parallelism, it means that multiple threads runs in parallel. Suppose, a process has only one thread then, do the other cores remain idle during the execution of this process? In linux system, scheduler consider processes and threads both as a task. It doesn't differentiate between process and thread while scheduling it. So, does this means that different cores executes different threads of different processes in parallel?

When context-switch happens, does this happen only for one core or for all the cores of the cpu?

1
I don't get a question. Yes, multiple processes could be running at different cores at the same time. Each process have at least one thread. Could you please be more specific?keltar
This question appears to be off-topic because it is about Linux, not programming.Zan Lynx

1 Answers

3
votes

You are right: processes and threads are the same from the Linux scheduler's point of view. These tasks are queued according to the scheduler's rules and wait for their turn.

There are scheduling rules such as priority or CPU affinity (to prevent a thread to migrate to another core and preserve cache data).

A context switch may happen on a core every fixed amount of time (a time slice) because the CPU automatically runs some kernel code periodically to permit preemption. Depending on the scheduler's rules, a task can be run for many time slices. A context switch can also occur when a thread calls functions that makes it unrunnable (eg. waiting for IO).

In some cases, if not all, there is one scheduling process per core which does all that.

There is also a similar question on superuser