线程检测和分配给CPU,谁做的工作?编译器? OS?中央处理器?

时间:2015-05-27 15:34:11

标签: multithreading operating-system multiprocessing cpu compiler-optimization

我想知道你何时拥有多核处理器,是否有人检测到独立的代码块并创建一个新的线程并将其分配给空闲的CPU?

我知道较新的CPU会尝试这样做。但我对编译器和操作系统知之甚少。

有人可以向我解释一下,编译器,操作系统和CPU将完成多少工作?

由于

更新: 对不起,如果我的问题太模糊,我们假设我们有一个代码转换为下面的指令集。

add $65,$66,$67
add $67,$65,$68

10000多条指令 ......

{{1}}

10000多条指令

我假设下部和上部之间的指令彼此独立。 现在,下面的说明可以发送到另一个核心执行,而不是等待上层设置完成。

我的问题是谁试图识别这些独立的块并将它们发送到不同的核心。

再次感谢。

1 个答案:

答案 0 :(得分:1)

在这些日子里,线程由库管理,在某些情况下也由编译器管理。 80年代的Ada编译器就是一个很好的例子。

现在,在支持它们的多处理器和操作系统的时代,线程往往由操作系统管理。操作系统选择要使用的处理器。

很少有编程语言具有真正的线程支持(例如,Ada),因此编译器往往很少涉及多线程。