2010-07-09 111 views
14

说出如果我有一个处理器,如this,它表示#cores = 4,#threads = 4并且没有超线程支持。线程vs内核

这是否意味着我可以同时运行4个程序/进程(因为一个内核只能运行一个线程)? 或者这是否意味着我可以同时运行4 x 4 = 16程序/进程?

从我的挖掘中,如果没有超线程,每个核心将只有1个线程(进程)。纠正我,如果我错了。

回答

10

这基本上是正确的,显而易见的限定条件是大多数操作系统允许您同时执行远远多于内核或线程的任务,这些内核或线程通过交错执行指令来完成。

具有超线程的系统的硬件线程数通常是物理内核的两倍。

+0

您可能想要小心使用“同时”。对用户来说,可能会出现一些任务正在同时发生,但实际的硬件可能不会同时执行每项任务。我认为@mikaelbrandin在并行和并发方面的信息是有用的。 – user3731622 2017-01-06 18:11:52

+1

@ user3731622我在答案中说明了CPU可以交错指令,从而明确了这一点。我怎么能使它更清晰? – 2017-01-07 03:33:41

+0

你的答案对于有经验的人可能相当清楚。一种方法可以让没有经验的人更清楚一点,那就是如果你使用某种形式的词同时出现或并行出现,并描述了当它不是实际同时发生时可能出现的同时出现的情况。 – user3731622 2017-01-09 17:09:13

5

术语线程通常用作操作系统概念的描述,其中潜在可以独立于其他线程执行。不管它是否卡住等待某个事件(磁盘或屏幕I/O,消息队列),或者是否有足够的物理CPU(超线程或非超级线程)允许它在其他非等待中运行线程。

超线程是一个CPU供应商术语,意思是一个单核,可以在两个计算之间复用它的注意力。思考超线程核心的简单方法就好像你有两个真正的CPU,两者都比制造商说核心实际上可以做的稍慢。

12

线程不同于进程。一个进程可以有很多线程。线程是一系列具有特定顺序的命令。逻辑核心可以在一系列命令上执行。操作系统将所有线程分配给所有可用的逻辑内核,并且如果线程数多于内核线程数,线程将以快速提示进行处理,并且内核之间的切换速度非常快。

看起来像所有线程同时运行,实际上操作系统分配CPU时间。

拥有多个内核具有以下优点:并发线程少于一个内核,线程之间切换更少=速度更快。

超线程技术在1个物理内核上创建2个逻辑内核,并使得线程之间的切换速度更快。

2

基本上这取决于操作系统。线程是一个持有指令指针的高级构造,操作系统在适当的逻辑处理器上放置线程执行。因此,使用4个内核,您可以基本上并行执行4条指令。作为线程的地方只包含有关要执行的指令和指令在内存中的位置的信息。

应用程序通常在执行期间使用单个进程,OS在进程之间切换以使所有进程“等于”进程时间。当应用程序部署多个线程时,进程分配多个时隙用于执行,但在线程之间共享内存。

通常情况下,您在并发执行和并行执行方面有所不同。如果实际上实际执行多个逻辑处理器的指令并行执行,并行执行是单个逻辑处理器的频繁切换,并行执行的出现。