单个进程可以在多个核心上运行吗?

问题描述 投票:0回答:2

单个进程可以在不同的核心上运行不同的线程吗?

(我认为他们可以)

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

谢谢!

concurrency operating-system multicore
2个回答
25
投票

是的,单个进程可以在不同的核心上运行多个线程。

缓存特定于硬件。许多现代英特尔处理器具有三层缓存,其中最后一级缓存在核心之间共享。

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


14
投票

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

但是,仍然有一些系统会调度进程执行。在此类系统上,线程由库(也称为用户线程)调度。换句话说,进程调度自己的线程来执行。在这些系统上,进程的线程在同一处理器上执行。

© www.soinside.com 2019 - 2024. All rights reserved.