单个进程可以在不同的核心上运行不同的线程吗?
(我认为他们可以)
在这种情况下,不同的内核共享相同的地址空间但具有不同的缓存?这是否意味着缓存会多余?
谢谢!
答案 0 :(得分:8)
是的,单个进程可以在不同的核心上运行多个线程。
缓存特定于硬件。许多现代英特尔处理器都有三层缓存,其中最后一级缓存在内核之间共享。
这并不意味着非共享缓存是冗余的,但它确实会影响多核性能。特别是,如果一个核心更新当前位于另一个核心的私有缓存中的地址空间中的值,则必须运行缓存一致性协议以确保另一个核心不再能够读取过时的值。
答案 1 :(得分:4)
单个进程可以在多个处理器上同时运行线程,如果底层系统调度线程(而不是进程)执行(也称为内核线程)。这是当今大多数系统上实现线程的方式(例如,Windows,Linux)。
但是,仍有一些系统会安排执行流程。在这样的系统上,线程由库(也称为用户线程)调度。换句话说,该进程调度其自己的线程以供执行。在这些系统上,进程的线程在同一处理器上执行。