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

时间:2018-12-06 06:55:55

标签: multithreading operating-system multiprocessing definition

编辑:对于可能出现的重复问题,我认为我尚未解决的部分是对 managed 一词尚不清楚,是否包含调度,如果这样的话,显然软件线程将不包括用户线程。但这很奇怪,因为我的直觉是只有两种线程:硬件或软件,然后用户线程都不属于。

Edit2 :可能在可能重复的链接中解决我的问题的候选人是this one,指出该问题已包含在内,因此,如果此问题没有问题,那么我接受封闭。


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

1 个答案:

答案 0 :(得分:3)

您是正确的,有硬件个线程。这些类似于真实的物理硬件结构。换句话说:硬件线程是通过在CPU中具有所有所需“单元”的多个“副本”来实现的,从而允许CPU真正并行地执行多个“执行线程”。

软件线程与基础硬件“分离”。它们代表“虚拟”资源。操作系统管理这些虚拟线程,并且任一使用底层硬件线程纯粹是“仅软件”线程管理来执行线程。

含义:OS寻求底层CPU的允许并使用 n 硬件线程来运行它所了解的 m 软件线程。从理论上讲,当 n 为1时(与20多年前一样),那么您就没有任何并行性,而只是基于时隙的调度。

要理解的关键:操作系统管理的所有线程都是“软件”线程。按照设置,将它们视为虚拟资源。现在:该资源仅具有不同类型。某些软件线程仅保留给OS内核使用。操作系统本身使用它们,没有用户应用程序可以看到它们。但是显然,应用程序也需要“自己”的线程。那样,这些将是“用户”线程,因为它们是根据某些用户空间代码中的请求创建的。