相关疑难解决方法(0)

如何调度/创建用户级线程,以及如何创建内核级线程?

如果这个问题很愚蠢,请道歉.我试图在网上找到答案很长一段时间,但不能,因此我在这里问.我学习线程,我一直在经历这个环节这个Linux的管道工会议2013视频有关内核级和用户级线程,而据我了解,使用并行线程创建线程在用户空间,内核是不知道关于这一点,并将其视为一个单独的进程,不知道内部有多少线程.在这种情况下,

  • 谁决定在进程的时间片期间调度这些用户线程,因为内核将其视为单个进程并且不知道线程,以及如何完成调度?
  • 如果pthreads创建用户级线程,如果需要,如何从用户空间程序创建内核级或OS线程?
  • 根据上面的链接,它说操作系统内核提供系统调用来创建和管理线程.那么clone()系统调用是否会创建内核级线程或用户级线程?
    • 如果它创建了一个内核级线程,那么strace一个简单的pthreads程序也会在执行时显示使用clone(),但是为什么它会被视为用户级线程呢?
    • 如果它没有创建内核级线程,那么如何从用户空间程序创建内核线程?
  • 根据链接,它说"它需要每个线程的完整线程控制块(TCB)来维护有关线程的信息.因此会产生大量开销并增加内核复杂性."所以在内核级线程中,只有堆是共享的,其余的都是线程的个体?

编辑:

我问的是用户级线程创建和它的调度,因为 这里有一个对多对一模型的引用,其中许多用户级线程被映射到一个内核级线程,并且线程管理在用户空间中由线程库.我一直只看到使用pthreads的引用,但不确定它是否创建了用户级或内核级线程.

c c++ linux multithreading linux-kernel

26
推荐指数
2
解决办法
4241
查看次数

标签 统计

c ×1

c++ ×1

linux ×1

linux-kernel ×1

multithreading ×1