什么是线程,它们在处理器中做什么?


27

我正在查看Intel Pentium e5700 CPU 的统计信息。

它有两个核心和两个线程。线程对处理器有什么作用?内核数和线程数之间有关系吗?线程为整个系统服务的目的是什么?


要么是CPU一次可以处理的线程数,要么是Intel发明的一些虚假数据。
2011年

3
投票结束是因为IMO这太笼统了-虽然我总是非常犹豫地说“只是Google它”,但超级用户(和类似网站)的目的是回答真实的问题,而不是作为技术术语的词典可以在更合适的资源中轻松查找。
Shinrai 2011年

3
@Shinrai我对其进行了编辑以使其不那么普遍
Simon Sheehan

Answers:


21

核心数量是CPU裸芯本身的物理数量,而线程数量是可以在CPU本身上同时执行的各个应用程序线程的数量。没有任何额外的或特殊的硬件,这等于内核数。但是,某些处理器的线程数将超过内核数。

某些Intel CPU具有称为超线程的功能,该功能使操作系统能够看到每个物理内核的逻辑内核数量增加一倍。这允许操作系统同时调度和运行双倍数量的线程,因此,在上面链接到的CPU中,有四个物理内核,但有八个逻辑内核(因此您可以同时运行八个线程)。

操作系统中运行的每个单独的应用程序都是单线程或多线程的(将每个线程视为“子应用程序”)。单线程应用程序只需要一个线程即可在CPU上运行,而多线程应用程序具有许多子线程同时运行。附加内核或超线程允许更多的应用程序线程同时运行。

这样可以使多线程(而非单线程)应用程序运行得更快,因为可以在CPU上一次运行多个线程。


最后要注意的是,超线程提高了一些专门为其优化的多线程应用程序的性能(因为逻辑上物理内核的数量仍然只有一半)。在某些情况下,禁用超线程后,应用程序可能会运行得更快(尽管许多应用程序确实可以从中受益)。不管超线程如何,物理内核数量的增加将始终使多线程应用程序受益。


1
您能否解释一下哪些线程对处理器起作用?+1是因为提到超线程,因为它现在很常见(似乎在所有i3中都如此)
Simon Sheehan

每个进程至少有一个线程。当进程打开CPU时,主线程将运行,直到其CPU启动为止。一个进程可以产生另一个线程,现在同一进程的两个部分将在运行,并请求CPU转向。所有进程都是程序,通过这种机制,同一程序中的两件事可以同时运行。它比进行新流程(即派生或加载新程序)要快,但安全性较低。进程彼此隔离,进程的线程不是隔离的。
LawrenceC

如果我创建了一个执行50个并发线程的多线程Java程序,然后在具有4个内核和8个线程的Intel i7-4790K上运行该程序,该怎么办?这是否意味着Java应用程序中的这50个线程中只有8个实际上是同时执行的,其余线程处于队列中?运作方式
多纳托2015年

@Donato操作系统会中断所有正在运行的线程,以使其他线程有一些时间来完成其工作。在任何给定的时刻,CPU上仅运行8个线程,并且每个内核不断在不同的线程之间切换。将它们视为“工作”会很有帮助(牢记工作也可以分配优先级)。每个内核将为给定的线程执行一些工作,然后被操作系统的任务调度程序中断,以移至另一个任务,对该任务执行一些任务,依此类推,依次类推,直到任务完成为止。
2015年

@ Breakthrough,Re“ 这样您就可以同时运行八个线程 ”,与单个真实内核提供的真实同时性相比,这种同时性有何限制?另外,“ 禁用超线程的应用程序运行得更快 ”怎么可能
佩里耶

9

“核心”表示处理器本身可以处理的实际物理子集,而“线程”表示处理器一次可以处理多少个实际进程。英特尔已经开发出了一种被他们称为“超线程”的技术,该技术允许一个物理核心(通常一次只能处理一个线程)现在能够同时处理两个线程。

线程是处理器必须处理的任务,为简单说明,您可以假定您打开的每个应用程序(例如绘画,记事本,媒体播放器)都有其自己的线程...现在这并不意味着您只能打开一次有2个应用程序,这仅仅是因为处理器和操作系统在“切换线程”中的工作速度如此之快,可以满足您打开的每个应用程序的需求。您将通过更多的内核体验到更好的性能,因为现在您可以将所有工作分配给更多的内核处理器。

例如,我的工作计算机中装有i7。i7具有4个物理核心,但是每个核心都可以执行“超线程”,这使该处理器可以一次处理8个线程。因此,如果我打开任务管理器,将会看到8个框,用于显示处理器性能。

一般的经验法则是,更多的物理核心胜于更多的线程。因此,如果您比较的是具有4个内核和4个线程的处理器,那将比2个内核的4个线程更好。但是,您的处理器可以处理的线程越多,则在多任务处理中的性能就越好,并且对于某些非常密集的应用程序(视频编辑,CAD,CAM,压缩,加密等)本身一次会利用多个内核。


您所说的“盒子”是什么意思?
Pacerier '16


-1

每次单击IE或chrome中的文章中的链接时,都会创建一个线程。您点击链接的次数越多,线程数也越多。有一个4核CPU,您最多可以有8个线程,可以在出现问题之前打开8个链接。忽略您的互联网连接。因此,每个核心都覆盖了您打开的那些链接(线程)中的两个。这就是IMO的想法。如果这对任何人都有意义


不,这不是CPU上下文中的线程或提出的问题。
music2myear
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.