软件线程是否包括用户线程?

Does software threads include user threads?

编辑:对于可能重复的问题,我认为我没有解决的部分是managed这个词仍然不清楚对我来说它是否会包括 scheduling,如果是这样,那么显然软件线程将不包括用户线程。但这很奇怪,因为我的直觉是只有两种线程:硬件线程和软件线程,然后用户线程不属于任何一种。

Edit2:在可能重复的 link 中可能解决我的问题的候选人是 this one,它声明它已包含在内,所以如果这个答案没问题然后我接受关闭。


this answer - software threads vs hardware threads 开始,软件线程是由 OS 管理 的线程。但我还学习了另一个术语,称为用户线程,它是不是内核线程的线程,即 OS 不会知道这些线程。那么软件线程包括用户线程吗?

你是对的,有硬件个线程。这些类似于真实的物理硬件结构。换句话说:硬件线程是通过在 CPU 中拥有所有必需的 "units" 中的多个 "copies" 来实现的,从而允许 CPU 真正并行地执行多个 [=34] =].

软件 线程是底层硬件的 "decoupled"。它们代表 "virtual" 资源。操作系统管理这些虚拟线程,要么使用底层硬件线程要么纯粹"software only"线程管理来执行线程。

含义:OS 查找底层 CPUs 允许并使用 n 硬件线程 运行 m 它知道的软件线程。理论上,当 n 为 1(我们 20 多年前的样子)时,您没有任何并行性,只有基于时隙的调度。

要理解的关键是:OS 管理的所有线程都是 "software" 线程。按照设定,将它们视为虚拟资源。现在:该资源有不同类型。某些软件线程仅供 OS 内核使用。 OS 本身使用它们,没有用户应用程序可以看到它们。但显然,应用程序也需要 "their" 自己的线程。这些将是 "user" 线程,因为它们是在某些用户空间代码中根据请求创建的。