用户级线程是否利用多处理?

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

用户级线程是否利用多处理?我在这里读到了一个这样的答案。但是,还不清楚。

“用户线程无法利用多线程或多处理”是什么意思?

这里的另一个答案说这是可能的

用户级线程 (ULT) 和内核级线程 (KLT) 在并发执行方面有何不同?

我是否遗漏了一些重要的细节?

multithreading process operating-system multiprocessing
3个回答
4
投票

通常,

user-level threads
无法利用多重处理,而
kernel-level threads
可以利用它。

这只是意味着我们可以在

kernel-level threads
计算机系统上并行运行多个
multi-core
。但对于
user-level threads
却不能这样做。

这是可能的,因为

kernel-level threads
Operating System
管理,而
user-level threads
由用户管理,这意味着操作系统只知道单个
user-level thread
(正在执行的),即使实际上有不止一个。

现在在您的链接中,您提到了:

Some implementations base their user threads on top of several kernel 
threads, to benefit from multi-processor machines (M:N model). 

根据我阅读链接后的理解,

user-level threads
有可能利用
multiprocessing
,只要其实现特定。所以这基本上就像一个
kernel-level thread
core
关联,以及
user-level thread
与相应的
kernel-level thread
关联。

所以最终,所有的

kernel-level threads
都在
several cores(OR CPU's)
上并行运行。如果没有
multiprocessing
的任何帮助,我们就无法利用
kernel


0
投票

这取决于你如何定义“利用”。

用户线程由进程调度。 该进程由内核调度。

用户线程只能在调度该进程的进程上执行。

因此来自同一进程的用户线程不能同时在多个处理器上执行。他们交错执行。

如果这是您对多重处理的定义,那么您的答案是否定的。

但是,如果操作系统支持,则该进程可以在任何可用的处理器上执行。因此,用户线程可以在任何可用的处理器上执行。

如果这是您对多重处理的定义,那么您的答案是肯定的。


0
投票

在 m:1 模型中,用户线程映射到一个内核线程。因此用户线程不能同时在多个内核上运行。但在 m:n 模型中,当内核线程可以在多个内核上运行时,用户线程映射到许多内核线程,因此用户线程可以在多个内核上运行并利用多处理。

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