【问题标题】:Does software threads include user threads?软件线程是否包括用户线程?
【发布时间】:2019-05-07 20:01:13
【问题描述】:

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

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


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

【问题讨论】:

标签: multithreading operating-system multiprocessing definition


【解决方案1】:

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

软件 线程与底层硬件“解耦”。它们代表“虚拟”资源。操作系统管理这些虚拟线程,要么使用底层硬件线程纯粹的“软件”线程管理来执行线程。

含义:操作系统查看底层 CPU 允许并使用 n 个硬件线程来运行它知道的 m 个软件线程。从理论上讲,当 n 为 1(我们 20 多年前的情况)时,您没有任何并行性,而只是基于时隙的调度。

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

【讨论】:

  • 如前所述:CPU 有单元,例如控制/算术/浮点/存储...一个单元每个周期处理一条指令。现在:如果你想要true 并行执行指令,你需要多个单元。换句话说:拥有对多线程的硬件支持意味着(部分)CPU 基础架构在内部是重复的。它就像一条高速公路:一条车道:一条车流。 5 条线路 -> 5 辆汽车,可以独立流动。如果您只有一条车道,您仍然可以在 5 条不同的车道中“合并”,但最终,它们使用的是同一条街道。真正的并行性 -->
  • 只能在多通道的情况下存在。 n==1 ... 就像一个非常旧的 CPU,其中只有一个通道。那时,线程在操作系统中纯粹是“虚拟的”,通过将所有操作系统任务调度到硬件中的一个通道上。 @ptr_user7813604 我希望这是有道理的,并且现在已经足够完整了;-)
  • @ptr_user7813604 是的,我知道,那里有点模糊。我想,我的意思是说:旧电脑只有“一条管道”来处理所有事情。没有“硬件线程”的概念。换句话说:它更像是当时的 n == 0。但我认为这会令人困惑......所以我转向 n == 1。
  • 明确一点,所谓的硬件线程不是线程,就像停车位不是汽车一样。
  • 此外,IMO 将线程视为 资源 并没有帮助。更好的方法是将线程视为执行代码的代理
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2011-04-02
相关资源
最近更新 更多