【问题标题】:User level threads vs Kernel level threads用户级线程与内核级线程
【发布时间】:2022-08-15 22:37:17
【问题描述】:

我知道用户级线程是在用户模式(无特权)下创建的,内核线程是在内核模式(特权)下创建的。 我也知道处理器线程是在内核线程上运行的硬件线程(我希望我这样说是正确的)

这是我的困惑:-

  1. 操作系统无法识别用户级线程,因为它们是在用户级上创建、维护和销毁的。操作系统不会将用户模式下的多线程进程视为多线程。它将其视为单线程进程。因此,这个程序不能利用多处理,我想它也不能利用超线程,因为它在操作系统中显示为单线程。 那么在这种情况下多线程有什么用呢?我的意思是计算时间还是一样的??????♂️。

  2. 最后一个问题是,POSIX 线程 API 和 OPenMP 是创建用户级线程还是内核线程? 我知道这两个库是什么,请不要解释。

    如果没有创建内核线程,那么我们如何创建一个利用多处理的多线程程序?

    标签: multithreading parallel-processing operating-system


    【解决方案1】:

    用户级线程是由用户代码管理的线程,无需内核的帮助。它们通常比内核线程更快地创建和销毁,但它们需要用户代码的合作才能正常工作,这可能会导致问题。

    内核级线程由内核管理,这意味着内核可以为其行为提供更可靠的保证。它们的创建和销毁通常比用户级线程慢,但它们不需要用户代码的配合才能正常工作。

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      相关资源
      最近更新 更多