2016-07-23 89 views
0

假设我在我的机器上有4个内核,并且我有一个产生4个线程的进程,而这是当前进程安排的,这4个线程都保留了这4个内核?进程占用了多少核心?

+0

Linux实际上[进度线程](http://stackoverflow.com/questions/15601155/does-linux-schedule-a-process-or-a-thread),而不是进程。当我们谈论调度过程时,我们通常会引用经典的,简化的单线程过程。 –

回答

1

这是一个非常复杂的问题。不过,我可以帮忙。通常,1个进程只使用1个内核。实际上,1个线程只能由1个内核执行。如果你有一个双核心处理器,它实际上是2个CPU一起粘在同一台PC上。这些被称为物理处理器。这些物理主管执行1个线程。尽管一些CPU有2个物理内核,但能够同时运行4个线程。这些额外的2个线程在逻辑内核上运行。它们并不物理存在,但在逻辑上存在于CPU中。

如果按进程表示线程,则是1进程1核心。你可以在4个计算核心上运行4个线程(这个名称包含物理和逻辑核心,因为一个核心cpu可能只有1个计算核心)。

如果通过进程表示程序或过程在任务管理器的进程选项卡中,则取决于程序的写入方式。

从你的问题来看,如果一个进程产生4个线程,它取决于它在池中的什么地方。有成千上万的线程在等待执行。来自每个程序或可执行文件的线程不必同时执行。

1

您的进程的4个线程是独立调度的 - 进程本身没有安排。

如果所有4个线程同时运行,并且系统中没有其他更高优先级的可运行线程,则可以在4个内核中同时调度所有4个线程。