Concurrency 单个进程能否在多个内核中运行?

Concurrency 单个进程能否在多个内核中运行?,concurrency,operating-system,multicore,Concurrency,Operating System,Multicore,单个进程能否在不同的内核上运行不同的线程 (我认为他们可以) 在这种情况下,不同的内核共享相同的地址空间,但具有不同的缓存?这是否意味着缓存将是多余的 谢谢 是的,一个进程可以在不同的内核上运行多个线程 缓存是特定于硬件的。许多现代英特尔处理器有三层缓存,其中最后一级缓存跨内核共享 这并不意味着非共享缓存是冗余的,但它确实对多核性能有影响。特别是,如果一个内核更新当前位于另一个内核的私有缓存中的地址空间中的值,则必须运行缓存一致性协议,以确保另一个内核不再读取过时的值。如果底层系统调度线程,则单

单个进程能否在不同的内核上运行不同的线程

(我认为他们可以)

在这种情况下,不同的内核共享相同的地址空间,但具有不同的缓存?这是否意味着缓存将是多余的


谢谢

是的,一个进程可以在不同的内核上运行多个线程

缓存是特定于硬件的。许多现代英特尔处理器有三层缓存,其中最后一级缓存跨内核共享


这并不意味着非共享缓存是冗余的,但它确实对多核性能有影响。特别是,如果一个内核更新当前位于另一个内核的私有缓存中的地址空间中的值,则必须运行缓存一致性协议,以确保另一个内核不再读取过时的值。

如果底层系统调度线程,则单个进程可以在多个处理器上同时运行线程(而不是进程)执行(又名内核线程)。这是当今大多数系统(如Windows、Linux)上线程的实现方式


然而,仍然有一些系统调度进程以执行。在这些系统上,线程由库(也称为用户线程)调度。换句话说,进程安排自己的线程执行。在这些系统上,进程的线程在同一个处理器上执行。

一个进程可以包含多个线程,是的。它们可以安排在任何内核上运行吗?当一个进程加载到CPU上时,我了解寄存器的内容是如何切换的;这是如何实现的使用多个CPU工作?检查如何找到您的系统是否使用内核、用户或两种类型的线程?您必须检查系统文档。[几乎]所有系统都支持模拟“用户”线程,因为它们是库而不是内核的一部分。