硬件线程与软件线程有何区别?

7

我了解到,在多核处理器中,每个核心包含2个硬件线程,例如在双核处理器中运行4个硬件线程。现在,如果我在Java中创建2个线程,这些线程将映射到2个硬件线程,还是这2个Java线程由特定核心的单个硬件线程执行?


操作系统负责在处理器之间分配线程;如果您的线程正在执行大量工作,则操作系统可能会将它们放在不同的CPU上。 - Blorgbeard
类似问题:http://stackoverflow.com/questions/508301/on-which-operationg-system-is-threaded-programming-sufficient-to-utilize-multiple - Blorgbeard
1个回答

3

这取决于很多因素,但你所指的每个核心的2个硬件线程是英特尔超线程技术。该技术使CPU在内存中具有两个线程上下文,并同时执行,共享执行资源。

线程在哪里运行取决于操作系统的实现方式,并且大多由您的操作系统的线程调度程序算法解决。


但是这些软件线程、Java线程和硬件线程是独立的还是相互依赖的?因为Java线程是在称为JVM的进程内创建的。 - Bhadri
1
这篇关于英特尔超线程的描述并不准确。某些资源会交替地提供给其中一个线程,但是执行单元是共享的,两个线程可能同时完成实际工作。当一个线程停顿时,资源争用最少。更多信息请参见此处(PDF) - rlibby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接