假设我有一个像this这样的处理器,它说#core = 4,#threads = 4且没有超线程支持。
这是否意味着我可以同时运行4个程序/进程(因为核心只能运行一个线程)? 或者这是否意味着我可以同时运行4 x 4 = 16程序/进程?
从我的挖掘中,如果没有超线程,每个核心只有一个线程(进程)。如果我错了,请纠正我。
答案 0 :(得分:16)
线程与进程不同。一个进程可以有很多线程。线程是具有特定顺序的一系列命令。逻辑核心可以在命令序列上执行。操作系统将所有线程分配给所有可用的逻辑内核,如果线程数多于内核,则线程将以快速提示进行处理,并且内核可以非常快速地从一个线程切换到另一个线程。
看起来所有线程都会同时运行,而实际操作系统会在它们之间分配CPU时间。
拥有多个内核的优势在于,在单个内核上放置的并发线程更少,线程之间的切换更少,速度更快。
超线程在1个物理内核上创建2个逻辑内核,并使线程之间的切换更快。
答案 1 :(得分:12)
这基本上是正确的,有明显的限定符,大多数操作系统允许你同时执行比核心或线程更多的任务,这是通过交错执行指令来完成的。
具有超线程的系统通常具有两倍于物理内核的硬件线程。
答案 2 :(得分:6)
术语线程通常用作操作系统概念的描述,其中 potential 独立于其他线程执行。是否这样做取决于它是否等待某些事件(磁盘或屏幕I / O,消息队列),或者是否有足够的物理CPU(超线程或非线程)以允许它在其他非等待的情况下运行线程。
超线程是一个CPU供应商术语,意思是单个核心,可以在两次计算之间复用其注意力。考虑超线程核心的简单方法就好像你有两个真正的CPU,两者都比制造商所说的核心实际上要慢一些。
答案 3 :(得分:2)
基本上这取决于操作系统。线程是一个包含指令指针的高级构造,并且OS将线程执行放在合适的逻辑处理器上。因此,使用4个内核,您基本上可以并行执行4条指令。线程只包含有关要执行的指令和指令在内存中的位置的信息。
应用程序通常在执行期间使用单个进程,并且OS在进程之间切换,以使所有进程“等于”处理时间。当应用程序部署多个线程时,进程会分配多个插槽用于执行,但在线程之间共享内存。
通常,您在并发执行和并行执行之间会有所不同。并行执行是指您实际物理执行多个逻辑处理器的指令,并发执行是单个逻辑处理器的频繁切换,提供并行执行的意义。