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

时间:2017-01-14 07:32:01

标签: multithreading process operating-system multiprocessing

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

What does it mean by "user threads cannot take advantage of multithreading or multiprocessing"?

这里的另一个答案说可能

How do user level threads (ULTs) and kernel level threads (KLTs) differ with regards to concurrent execution?

我在这里遗漏了一些重要的细节吗?

2 个答案:

答案 0 :(得分:2)

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

这只是意味着我们可以在kernel-level threads计算机系统上并行运行多个multi-core。但user-level threads无法做到同样的事情。

这是可能的,因为kernel-level threadsOperating 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

答案 1 :(得分:0)

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

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

然后,用户线程只能在安排进程的进程上执行。

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

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

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

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